所有
我有asp.net网站,在我的bin文件夹中,我有我动态编译的代码所引用的所有必要程序集。我在运行时使用CodeDomProvider编译我的代码。
当我使用以下行编译表达式时
compiler.CompileAssemblyFromSource(expr);
我收到错误: 无法找到元数据文件'NHibernate.dll' ,尽管该程序集位于bin文件夹中。
注意:我有类似的代码,可以在Windows应用程序中使用,如果不相同的话。
这是我的代码:
CodeDomProvider compiler = _GetCompiler();
CompilerParameters compilerParams = _GetCompilerParams();
CompilerResults results = compiler.CompileAssemblyFromSource(compilerParams, expr);
if (results.Errors.Count > 0)
throw new InvalidOperationException("Failed to compile criteria expression for the following reason: " + _GetAllCompilerErrors(results.Errors));
private CodeDomProvider _GetCompiler()
{
Dictionary<string, string> providerOptions = new Dictionary<string, string>();
providerOptions.Add("CompilerVersion", "v2.0");
CodeDomProvider compiler = new CSharpCodeProvider(providerOptions);
return compiler;
}
private CompilerParameters _GetCompilerParams()
{
CompilerParameters compilerParams = new CompilerParameters();
compilerParams.GenerateInMemory = true;
compilerParams.GenerateExecutable = false;
compilerParams.ReferencedAssemblies.AddRange(new string[] {
"System.dll",
"NHibernate.dll",
});
return compilerParams;
}
答案 0 :(得分:1)
我也有同样的问题,只需通过明确添加来解决它 路径中的bin文件夹
而不是“NHibernate.dll”使用如下:
Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)+ "\\NHibernate.dll")
它现在将在bin目录中查找“NHibernate.dll”同样适用于我
我希望它也适合你