0

私はターゲット フレームワークに対して開発してい.NET Framework 3.5ます。プロジェクトLoggerは次のライブラリを使用します

Newtonsoft.Json.dll
Version = 4.5.0.0
AssemblyFileVersion = 5.0.8.16617
PublicKeyToken = 30ad4fe6b2a6aeed
TargetFramework = v3.5

これは、プロジェクトで参照されているアセンブリです。

アプリケーションMyAppにはプロジェクトへのプロジェクト参照があるLoggerため、 への間接参照がありNewtonsoft.Json.dllます。

Copy Localプロパティを に設定すると、true強制的Newtonsoft.Json.dllに出力ディレクトリにコピーされます。をコンパイルすると、 も対応する出力ディレクトリにMyAppコピーされます。GACNewtonsoft.Json.dllにはないことに注意してくださいNewtonsoft.Json.dll

ここまでは順調です。

ここで、次のライブラリを.NET Framework 4.0GAC にインストールしました ( %windir%\Microsoft.NET\assembly)。

Newtonsoft.Json.dll
Version = 4.5.0.0
AssemblyFileVersion = 4.5.8.15203
PublicKeyToken = 30ad4fe6b2a6aeed
TargetFramework = v4.0

このライブラリを GAC にインストールする.NET Framework 4.0と、参照されているプロジェクトNewtonsoft.Json.dllが の出力ディレクトリにコピーされなくなりMyAppます。しかし、それは依然として の出力ディレクトリにコピーされますLogger

私はこの動作を自分自身に説明しようとしました:プロパティが に設定されているため、参照されているプロジェクトNewtonsoft.Json.dllは の出力ディレクトリにコピーされます。LoggerCopy Localtrue

Newtonsoft.Json.dllしかし、が の出力ディレクトリにコピーされなくなった理由がわかりませんMyApp。GAC にインストールしたライブラリは、.NET Framework 4.0(私の意見では) ビルド システムに「表示」されるべきではありません.NET Framework 3.5

ライブラリが見つからないSystem.IO.FileNotFoundExceptionため、実行時に が表示されます (ライブラリが で使用される GAC 3.5 ではない 4.0 GAC にあるため、これは明らかです)。Newtonsoft.Json.dllMyApp

  • ターゲット フレームワーク 3.5 プロジェクトのビルド システムが の GAC 内のアセンブリを認識するのはなぜ.NET Framework 4.0ですか?
  • GAC 4.0 にがある場合Newtonsoft.Json.dll、ターゲット フレームワーク 3.5 で参照されるローカルを出力ディレクトリにコピーするにはどうすればよいですか?MyAppNewtonsoft.Json.dll
4

1 に答える 1