首页 > 解决方案 > 选择 .NET Framework 目标

问题描述

我有一个应用程序,我会在其中同时使用 .net std 2.0 和 .net4.6.1。我已经在我的 .csproj 文件中声明它似乎有效。

<PropertyGroup>
  <TargetFrameworks> net461;netstandard2.0 </TargetFrameworks>
</PropertyGroup>

我使用了预处理器指令来让代码按照我想要的方式运行。

#if NET461
  //.net 4.6.1 code
#else
  //.net std 2.0 code
#endif

当我运行我的应用程序时,我总是进入 .net std 2.0 案例。如何指定代码中的特定部分应针对给定框架?

我已按照以下说明操作: https ://docs.microsoft.com/en-us/dotnet/standard/frameworks

标签: c#.net

解决方案


以下是我们的一个项目如何配置为使用各种版本的 .Net 框架:

<startup useLegacyV2RuntimeActivationPolicy="false">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>

编辑:

只需打开您的 XML 正文,添加一个<configuration>标签,然后将启动要求放入其中。

这是一个完整的(和基本的)app.config文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="false">
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
</configuration>

useLegacyV2RuntimeActivationPolicy在这个问题中解释:

.NET 4 配置中的“useLegacyV2RuntimeActivationPolicy”有什么作用?


推荐阅读