1

ビルダー アプリケーションでは、対象のフレームワークがバージョン 4 に設定されていましたが、それをバージョン 2.0 に変更したところ、突然、次のようなエラーが表示されました。

Error   1   No overload for method 'CreateProvider' takes 2 arguments

このコード行で発生していた:

provider = CodeDomProvider.CreateProvider("CSharp", providerOptions);

次に、上記の行を次のように変更しました。

provider = CodeDomProvider.CreateProvider("CSharp");

これですべてがうまくいきます。しかし、問題は、ProviderOptions (コンパイラのバージョンを保持する Dictionary 項目) を追加しない場合、どのネット フレームワークがターゲットになるかということです。v2 または v4 ?

どんな助けでも大歓迎です!

4

2 に答える 2

2

MSDN ドキュメントの 2.0 バージョンでわかるように、フレームワークの 2.0 バージョンでは、CreateProvider は providerOptions を受け入れるようにオーバーロードされていませんでした。

2.0 CreateProvider

一方、バージョン 4.0 以降では、メソッドはオーバーロードされています。

4.0 CreateProvider

この場合、2.0 フレームワークが使用されると思います。

于 2012-05-01T16:41:39.423 に答える
1

フレームワークの v2.0 で実行していることを考えると、他のバージョンのランタイムをターゲットにできるとは思えません。これを確認するのは少し難しいですが、新しいバージョンのフレームワークから古いフレームワークをターゲットにすることはできますが、その逆はできません。時空の連続体を破壊するでしょう。

とにかく、2.0 の CodeDomProvider の Microsoft ドキュメントへのリンクは次のとおりです http://msdn.microsoft.com/en-us/library/6yzxs14d.aspx

もう 1 つは、参照されている GetAllCompilerInfo メソッドであり、コンパイラ設定をチェックアウトするために利用できる可能性があります。

http://msdn.microsoft.com/en-us/library/system.codedom.compiler.codedomprovider.getallcompilerinfo.aspx

于 2012-05-01T16:42:23.913 に答える