针对多个框架的C#

时间:2018-09-11 08:51:49

标签: c#-7.3

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

我正在看一个小的测试应用程序的一段代码,并注意到属性中的“ Target Framework”下拉列表已被禁用。编辑.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>

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

然后,查看此指令中的Task

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

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

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以将TargetFramework中的TargetFrameworks作为当前目标。 MSBuild将一次建立每个目标。

遗憾的是,TargetFrameworks仍然没有UI。

在Visual Studio中,选择一个活动对象是在编辑器窗口顶部的左上方组合框中。