CSharpCodeProvider を使用して実行時に DLL をコンパイルしています。私のコードは一部のマシンでは正常に動作しますが、他のマシンでは次のエラーで失敗します:
エラー CS0006: メタデータ ファイル 'EntityFramework.dll' が見つかりませんでした
コード スニペットを次に示します。
var csFile = ... // the file is in C:\Program Data\MyFolder\InnerFolder
using (var provider = new CSharpCodeProvider())
{
var parameters = new CompilerParameters
{
GenerateInMemory = false, // we want the dll saved to disk
GenerateExecutable = false,
CompilerOptions = "/target:library",
// the assembly is compiled to the same directory as the .cs file
OutputAssembly = GetNewCacheAssemblyPath(),
};
parameters.ReferencedAssemblies.AddRange(new[]
{
"System.dll",
"System.Data.dll",
"System.Data.Entity.dll",
"EntityFramework.dll",
});
var compilerResult = provider.CompileAssemblyFromFile(parameters, csFile);
}
なぜこれが起こっているのでしょうか?