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 メッセージ: メソッド 'Find' のオーバーロードはありません '1' 引数を取ります 行: 617

投げられています。

これで、VS のソリューションの一部としてコンパイルすると、このクラスが正常にコンパイルされることがわかりました。しかし、個別にコンパイルすると、これらのエラーがスローされます。アプリケーションに問題なくフックされることがわかっているため、コンパイラにこれらのエラーを無視させる方法はありますか?

4

1 に答える 1

1

警告レベルを低く設定してみてください:

      parameters.WarningLevel = 1;

しかし、コンパイルしているコードのソースを見ずに、確かなことを言うのは難しいです.

于 2012-08-25T21:48:38.607 に答える