C# 从源文件编译应用程序时,默认的目标.NET Framework版本是什么?

C# 从源文件编译应用程序时,默认的目标.NET Framework版本是什么?,c#,frameworks,.net,C#,Frameworks,.net,在builder应用程序中,目标框架被设置为版本4,然后我将其更改为版本2.0,突然我收到一个错误,上面写着: Error 1 No overload for method 'CreateProvider' takes 2 arguments 发生在这一行代码上: provider = CodeDomProvider.CreateProvider("CSharp", providerOptions); 然后我简单地将上面的行更改为: provider = CodeDomProvide

在builder应用程序中,目标框架被设置为版本4,然后我将其更改为版本2.0,突然我收到一个错误,上面写着:

Error   1   No overload for method 'CreateProvider' takes 2 arguments
发生在这一行代码上:

provider = CodeDomProvider.CreateProvider("CSharp", providerOptions);
然后我简单地将上面的行更改为:

provider = CodeDomProvider.CreateProvider("CSharp");
现在一切都好了。但问题是当我不添加ProviderOptions(保存compilerversion的字典项)时,哪个net framework将成为目标?v2还是v4


任何帮助都将不胜感激

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

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


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

鉴于您运行的是v2.0框架,我无法想象您可以针对任何其他版本的运行时。要确认这一点有点棘手,但您可以从新版本的框架中瞄准旧框架,但您不能反过来。我相信这会破坏时空连续体

无论如何,这里有一个指向2.0中CodeDomProvider的microsoft文档的链接

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