我在運行時使用CSharpCodeProvider編譯DLL。我的代碼運行在某些機器上正常,但在otherse失敗,出現以下錯誤:CSharpProvider運行時編譯無法找到DLL
error CS0006: Metadata file 'EntityFramework.dll' could not be found
下面的代碼片段:
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);
}
任何想法,爲什麼這可能發生?
做的所有機器都安裝了Entity框架嗎?如果沒有,你可能需要在其上安裝.Net framework 4或手動部署它 – Amitd
@Amitd:什麼是最簡單的方法來確定是否是這種情況?據我所知,所有這些機器都安裝了.NET 4。這些是開發者機器,我們的應用程序(它使用EF正在開發中......) – ChaseMedallion
for EF更多信息在這個頁面上http://stackoverflow.com/questions/6498388/could-not-locate-assembly-entityframework。 。可能是有版本差異..沒有線索..也嘗試複製輸出文件夾中的dll像漢斯說 – Amitd