.NET 3.5 Codedomコンパイラ奇数エラーを生成します
-
27-09-2020 - |
質問
これは遠くにありますが、私は可能な限り最善の問題を説明しようとします。私は.NET 3.5でCodedomコンパイラを使用しています。ここで、edmgen.exeから生成され、1が動的に生成されたファイルです。コンパイルコードはこの
のように見えますCompilerResults results = compiler.CompileAssemblyFromFileBatch(parameters, new string[]{string.Format("{0}\\Dynamic.cs", Directory.GetCurrentDirectory()),
string.Format("{0}\\{1}.ObjectLayer.cs", Directory.GetCurrentDirectory(), ModelName), string.Format("{0}\\{1}.Views.cs", Directory.GetCurrentDirectory(), ModelName)});
.
これらのうち3つすべてがコンパイルされているとき、このエラーが発生しています
クラス、構造体、またはインターフェイスメンバ宣言宣言
の無効なトークン 'void'
このエラーは、objectLayer.cs
にあるこのコード行を参照していると仮定します。パーシャルボイドONIDCHANGED();
しかし、これらの3つのファイルが新しいVS2010プロジェクトに含まれていて、それらのコンパイラを介してコンパイルされている場合....このエラーはcodedomコンパイラでのみOCSURINGです。 。
私はここでこれと非常に似た問題を見つけました http:// Scocial. .msdn.microsoft.com /フォーラム/ ja-US / LINQProjecteneral /スレッド/ 85E085C8-B6AC-4CAE-B59D-7B9CE7758122 /
しかし、この修正は機能しないため、CodedomコンパイラがVSコンパイラではないので機能しません....
私は.NET 3.5 Commandlineコンパイラ(CSC.exe)を試したことにも注意したいと思います。そして私はこの正確なコードを.NET 4でもテストしました。この問題は.NET 3.5
の下にあるように思われるだけです。誰もがこれまでに走るか、または.NET 3.5 Codedomコンパイラが部分的なボイドの問題を抱えているのかという理由を持っている理由を持っていますか?
解決
発行解決済み!
私の意見ではまだ非常に奇妙ですが、.NET 3.5デフォルトではCodedomコンパイラは.NET 2 csc.exeコンパイラを使用したいです。これは私のCSファイルとの競合を引き起こしていました。
コンパイラversion
を指定する必要があります。var csc = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } });
.
並ぶものはすべて私の問題を解決しました。