1

在构建器应用程序中,目标框架设置为版本 4,然后我将其更改为版本 2.0,突然我收到一条错误消息:

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

这发生在这行代码上:

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

然后我只是将上面的行更改为:

provider = CodeDomProvider.CreateProvider("CSharp");

现在一切正常。但问题是当我不添加 ProviderOptions (包含编译器版本的字典项)时,哪个网络框架将成为目标?v2 还是 v4 ?

任何帮助将不胜感激!

4

2 回答 2

2

正如您在 MSDN 文档的 2.0 版本中看到的那样,在 2.0 版本的框架 CreateProvider 中没有重载以接受 providerOptions

2.0 创建提供者

而从 4.0 版本开始,该方法被重载

4.0 创建提供者

我认为在这种情况下将使用 2.0 框架。

于 2012-05-01T16:41:39.423 回答
1

鉴于您在框架的 v2.0 中运行,我无法想象您可以针对任何其他版本的运行时。找到确认这一点有点棘手,但是您可以从较新版本的框架中定位旧框架,但您不能反过来做。我敢肯定,它会破坏时空连续体。

无论如何,这是 2.0 中 CodeDomProvider 的微软文档的链接 http://msdn.microsoft.com/en-us/library/6yzxs14d.aspx

另一个是引用的 GetAllCompilerInfo 方法,您可以利用它来检查编译器设置。

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

于 2012-05-01T16:42:23.913 回答