首页 > 解决方案 > 针对多个框架的 C#

问题描述

我已经尝试对此进行一些搜索,但由于我不确定这是“什么”,所以我没有走得太远,所以它很可能是我找不到的另一个问题的重复。

我正在查看一个小测试应用程序的一段代码,并注意到属性中的“目标框架”下拉菜单被禁用。编辑 .csproj 文件向我展示了这一点:

<TargetFrameworks>net451;netcoreapp1.0;netcoreapp2.0</TargetFrameworks>

在文件中往下看一点,我看到了:

  <ItemGroup Condition="'$(TargetFramework)' != 'netstandard2.0'">
    <PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="1.0.3" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetFramework)' == 'net451' ">
    <Reference Include="System" />
    <Reference Include="Microsoft.CSharp" />
  </ItemGroup>

有人能指出我正确的方向,以了解这是什么,它是如何工作的以及它的用例是什么?

然后,查看此指令的任务

#if NET451
            return Task.FromResult(true);
#else
            return Task.CompletedTask;
#endif

我注意到 NET451 已启用,我试图找出为什么这是它选择的而不是 netstandard2.0?通常我可以只选择目标框架,但正如我所提到的,下拉菜单被禁用,所以我试图了解它是如何选择它的。

标签: c#-7.3

解决方案


您可以将TargetFramework其视为当前目标TargetFrameworks。MSBuild 将一次构建每个目标。

可悲的是,仍然没有TargetFrameworks.

在 Visual Studio 中选择哪个处于活动状态的方式位于编辑器窗口顶部的左上角组合框中。


推荐阅读