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

标签 c# dll compiler-construction compiler-errors codedom

有没有办法使用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/

相关文章:

c# - 为自定义版本控制实现 checkin / checkout

c# - C#计算Flv和Swf的宽高

c# - 如何在C++中调用C#代码

linux - 使用 Linux 使用我的自定义库 (.h) 编译我的 C 程序

c# - 林克错误 : not contain a definition for 'InsertOnSubmit'

c# - 具有动态枚举字段的自定义 Unity C# 脚本编辑器

delphi - 在 Delphi 6 应用程序的运行时在两个版本的基于 ActiveX IDispatch 的相同界面之间切换?

visual-studio-2008 - 如何设置dll的图标?

c - 为什么下面的 C 代码在 int 45 的情况下打印 45,在 STRING 的情况下打印 36,而 CHAR 的 ASCII 值则打印 36?

c++ - 从另一个编译器导出的 DLL 加载类