我正在使用CodeDom创建新的.cs文件,之后想用CSharpCodeProvider编译/运行它们,但在引用方面遇到了一些问题。
代码看起来像这样:
var provider = new CSharpCodeProvider();
var compilerparams = new CompilerParameters(
new[]
{
"First.dll",
"Second.dll"
})
{
GenerateExecutable = false,
GenerateInMemory = true
};
CompilerResults results = provider.CompileAssemblyFromFile(compilerparams, _path);
if (!results.Errors.HasErrors)
return results.CompiledAssembly;
var errors = new StringBuilder("Compiler Errors :\r\n");
foreach (CompilerError error in results.Errors)
{
errors.AppendFormat("Line {0},{1}\t: {2}\n",
error.Line, error.Column, error.ErrorText);
}
throw new Exception(errors.ToString());
"
"First.dll"和"Second.dll"与我的生成的.cs文件在同一文件夹中,如果我直接运行它,会出现错误。如果我将它们移动到我的项目bin目录中,它可以正常工作,但我更愿意保持它们分开。
是否可以为"First.dll"和"Second.dll"设置绝对路径或指向包含所有引用的目录路径,而不是将它们移动到我的bin目录?
我尝试将CompilerParameters更改为绝对路径,但没有帮助。
"
AppDomain.CurrentDomain
将增加所有这些程序集。你找到了吗? - qakmak