有没有办法使用 CodeDomProvider 进行不太严格的编译?我正在尝试使用以下方法将 dll 文件编译并加载到我已经运行的程序中:
public static String Compile(string commandName, string source = "")
{
private static CodeDomProvider compiler = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } });
private static CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.MainClass = commandName;
parameters.OutputAssembly = dll;
parameters.ReferencedAssemblies.Add("MCLight_.dll");
parameters.CompilerOptions = "/optimize";
parameters.WarningLevel = 4;
parameters.TreatWarningsAsErrors = false;
StreamReader sr = new StreamReader(sourcepath + "cmd" + commandName + ".cs");
results = compiler.CompileAssemblyFromSource(parameters, sr.ReadToEnd());
.....
}
问题是错误,例如:
错误 #CS0122 消息:“MCLight.Independent”由于其保护级别而无法访问 行:1178
和
错误 #CS1501 消息:方法“查找”没有重载采用“1”参数行:617
被抛出。
现在我知道一个事实,当我在 VS 中将它编译为我的解决方案的一部分时,这个类编译得很好。但是当单独编译时,它会抛出这些错误。有没有办法让编译器忽略这些错误,因为我知道它会很好地挂接到应用程序?