C# 如何确定运行我的应用程序所需的最低.NET framework版本

C# 如何确定运行我的应用程序所需的最低.NET framework版本,c#,.net,C#,.net,我已经编写了c#控制台应用程序。NET Framework默认设置为4.5版。 我想知道是否有一种方法,可以使用较旧版本的.NET framework或test来测试应用程序,实际需要运行哪个版本的framework应用程序(不考虑targettype framework)。您可以向app.config文件中添加一些项,以针对特定版本的framework,以覆盖构建它时使用的版本。显然,您仍然需要测试它是否与这些版本一起工作,但这允许您在不同版本的框架上运行: <configuration

我已经编写了c#控制台应用程序。NET Framework默认设置为4.5版。
我想知道是否有一种方法,可以使用较旧版本的.NET framework或test来测试应用程序,实际需要运行哪个版本的framework应用程序(不考虑targettype framework)。

您可以向app.config文件中添加一些项,以针对特定版本的framework,以覆盖构建它时使用的版本。显然,您仍然需要测试它是否与这些版本一起工作,但这允许您在不同版本的框架上运行:

<configuration>
  <!-- this is used if they only have net 4 installed-->
  <!--
  <runtime>
    <NetFx40_LegacySecurityPolicy enabled="true"/>
  </runtime>
  -->
  <startup>
    <supportedRuntime version="v2.0.50727"/>
    <supportedRuntime version="v4.0.30319"/>
  </startup>
</configuration>

我的问题是关于System.Linq库,它在.NET framework 2.0中不受支持。
正如您在评论中看到的,我使用nuGet的LINQBridge解决了这个问题。另一个问题是,Framework2.0不包含HashAlgorithm的公共方法Dispose。我用清晰的方法解决了这个问题。通过重新安装所有nuget软件包,所有其他错误都已修复。

更改项目中的目标框架,查看它是否仍能编译?这取决于您使用的代码。如果您使用了4.5 libs,那么您将需要v4.5。@Lee,即使严格来说这也不是真的;一系列的
Microsoft.Bcl
软件包可供使用,这些软件包在早期的框架中添加了后来的Bcl功能;许多依赖于这些特性的新编译器特性也将对早期的框架起作用。再回过头来看,有些东西像LINQBridge,它在2.0中添加了一些3.5特性。@JamesS“…和运行,行为相同”;pIs是否有一个包含方法的库,这些方法现在位于system.linq中?因为我只使用system.linq,它在3.5或更高版本中…+1,也许您也可以添加关于
元素的注释或提示?您难道不知道Microsoft不再支持.NET 2.0,除非您应用了.NET 3.5 SP1吗?如果您知道这一点,您应该能够立即停止,专注于.NET3.5+。别再在那上面浪费时间了。