gpt4 book ai didi

c# - 较少严格的CodeDomProvider来编译DLL

转载 作者:行者123 更新时间:2023-12-02 10:55:23 25 4
gpt4 key购买 nike

有没有办法使用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
消息:方法'Find'的重载没有接受'1'参数
线:617

被抛出。

现在,我知道一个事实,当我将其作为VS解决方案的一部分进行编译时,此类可以很好地编译。但是当单独编译时,会引发这些错误。有一种方法可以让编译器忽略这些错误,因为我知道它会正确地挂接到应用程序中?

最佳答案

您可以尝试将警告级别降低:

      parameters.WarningLevel = 1;

但是,如果没有看到正在编译的代码源就很难确定。

关于c# - 较少严格的CodeDomProvider来编译DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12125895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com