我正在使用 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 更改为绝对路径,但这没有帮助。