0

有没有办法使用 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 中将它编译为我的解决方案的一部分时,这个类编译得很好。但是当单独编译时,它会抛出这些错误。有没有办法让编译器忽略这些错误,因为我知道它会很好地挂接到应用程序?

4

1 回答 1

1

您可以尝试将警告级别设置得更低:

      parameters.WarningLevel = 1;

但是如果不查看您正在编译的代码源,就很难确定。

于 2012-08-25T21:48:38.607 回答