0

CodeDOM を使用すると、次のようなものがあります。

CompilerParameters parameters = new CompilerParameters();
parameters.ReferencedAssemblies.Add("System.dll");
parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
parameters.ReferencedAssemblies.Add("System.Data.Linq.dll");
parameters.ReferencedAssemblies.Add("System.Xml.Linq.dll");
parameters.ReferencedAssemblies.Add("System.Core.dll");

プログラムを実行すると、これは最後の 3 つの DLL に対して発生するエラーです。最初の 2 つ ( System.DLL および System.Windows.Forms.DLL ) には問題もエラーもありませんが、最後の 3 つを追加するとすぐにこれらの DLL をロードする行も追加すると、図のようなエラーが発生します。とても奇妙で迷惑で、修正する方法が見つかりませんでした。

ありがとう。

ここに画像の説明を入力

4

1 に答える 1

0

ああすごい!トリッキーでした!

Visual Studio が設定されているターゲット プラットフォームが何であるかは気にしません。参照するのは、独自のCodeProviderクラスです。以前は、デフォルトのコンストラクターを使用していました。ただし、Dictionary パラメーターを受け取る別のコンストラクターもあります。このパラメーターでは、使用する .NET のバージョンを指定します。したがって、新しい CodeProvider オブジェクトを作成する代わりに、次のようにする必要があります。

    Dictionary<string, string> compilerInfo = new Dictionary<string, string>();
    compilerInfo.Add("CompilerVersion", "v3.5");
    CSharpCodeProvider codeProvider = new CSharpCodeProvider(compilerInfo);

今では動作します。

于 2012-06-04T21:47:38.713 に答える