Я компилирую DLL во время выполнения с использованием CSharpCodeProvider. Мой код работает отлично на некоторых машинах, но на 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
для EF более подробная информация на этой странице .. http://stackoverflow.com/questions/6498388/could-not-locate-assembly-entityframework. Возможно, есть разница в версии .. нет подсказки .. также попробуйте скопировать dlls в выходной папке, как сказал Ганс – Amitd