2009-07-09 15 views
6

私は、提供されたマイクロソフトのDLLを使用して、C#でクラスLLライブラリを作成しています。C#ClassLibraryのライブラリを静的にリンクする方法は?

ここでは、Microsoftが提供するライブラリをMy Dllに静的に追加したいと考えています。これを行うにはどうすればよいですか。 私は単に、マイクロソフトが提供するDllへの参照を追加し、My Dllを作成しましたか?それは大丈夫ですか?

Microsoftが提供するDLLが他のマシンで利用できない場合、私のDLLは失敗する可能性があります。静的にライブラリを追加する必要がありますか?

どうすればいいですか?

+0

これで何を達成しようとしていますか? –

答えて

6

.NET内の別のアセンブリに静的にリンクすることはありません。 .NET linkerのように、アセンブリを1つにマージしてもサポートされていないサードパーティ製の製品があります。

そのライブラリの再配布ライセンスをお持ちの場合は、アセンブリと共にコピーを同梱できます。 Visual Studioでは、そのアセンブリ参照のプロパティウィンドウで "ローカルコピー"を "True"に設定することで、これを行うことができます。

3

実行時にdllを使用できない場合は、はい、それは失敗します。しかし:

  • 多くのMicrosoftのDLLは、.NET(警告:「クライアント・プロファイル」)がプリインストールされているマイクロソフトのDLLの多く
  • は再配布可能です。あなたのパッケージにそれらを含めることができます

ILMergeが役に立つかもしれませんが、コアフレームワークにはリンカーはありません。

0

あなたが達成したいことはあまり明確ではありませんが、あなたのクラスのlibが他のマシンで動作するかどうか心配しているようです。問題は、.Netフレームワークがターゲットマシンに存在しない場合にインストールされるべき無料の再配布可能ファイルであることです。 .Netフレームワークがすでにマシンにインストールされているので、問題はありません。

静的なリンクは、.NETではアセンブリ参照をプロジェクトに追加する以外は意味をなさない。欲しいのですが。

+0

dllをC++で静的にリンクすると、exeとdllが1つのファイルに結合され、配布が容易になり、限られた環境でも実行できるようになります。 –

関連する問題