全部,
我有 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;
}