3

新しい C# プロジェクトを作成して dll を参照すると、プロジェクトのコンパイル時に dll がプロジェクトの出力ディレクトリにコピーされます。

dll ファイルを参照し、それらをプロジェクトの出力ディレクトリにコピーせず、実行時に実行可能ファイルを動作させる方法はありますか (Assemblies私が間違っていない場合のようなものです)。

参照 dll のプロパティにアクセスして、 を変更しCopy LocalましたFalseが、役に立ちませんでした (おそらく、その dll が dll のディレクトリにある他の dll に依存しているためです)。

それを行う方法はありますか?

4

1 に答える 1

2

実際には、アセンブリをGACにコピーすることができますが、これは必ずしも理想的な解決策ではありません。

GAC にコピーされた各アセンブリは厳密な名前を持つ必要があることに注意してください。プロジェクトでいくつかの NuGet パッケージを使用している場合、これらのパッケージをすべて GAC にインストールするのは困難です。それもNuGetを使う目的ではないと思います。

別のオプションは、構成でタグをbin使用して、デフォルトのフォルダーとは異なるディレクトリから DLL をロードすることです。<codeBase>

<configuration>
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
     <dependentAssembly>
        <assemblyIdentity name="MyAssembly2"  culture="neutral" publicKeyToken="307041694a995978"/>
        <codeBase version="1.0.1524.23149" href="FILE://C:/Myassemblies/MyAssembly2.dll"/>
     </dependentAssembly>
  </assemblyBinding>
</runtime>
</configuration>

しかし、私が覚えているように、実行時に可能です。

EDIT:開発中のSDKを参照する必要があるという問題があるため、GACも機能しないと思いますcodeBase。1 つはバージョニングの問題です (特定の SDK バージョンを参照する必要があります)。もう 1 つは、一部のメタデータがアセンブリに格納されているため、新しい SDK のリリース後に常にツールを再コンパイルする必要があることです。これは、新しい SDK バージョンでは古くなる可能性があります。

于 2015-08-05T10:11:57.990 に答える