c#-7.3 - 针对多个框架的 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?通常我可以只选择目标框架,但正如我所提到的,下拉菜单被禁用,所以我试图了解它是如何选择它的。
解决方案
您可以将TargetFramework
其视为当前目标TargetFrameworks
。MSBuild 将一次构建每个目标。
可悲的是,仍然没有TargetFrameworks
.
在 Visual Studio 中选择哪个处于活动状态的方式位于编辑器窗口顶部的左上角组合框中。
推荐阅读
- scikit-learn - Lambda 找不到 sklearn
- c - C语言有什么方法可以通过变量来控制字符的长度吗?
- hive - 将代码字符串翻译成 hive 中的 desc
- javascript - JS:从网页加载页面内容(如果可能),回退到本地副本
- python - for 循环中的并行作业随着每次迭代而减慢
- ruby-on-rails - 自动加载路径和嵌套服务类在 Ruby 中崩溃
- json - JQ新手在选择嵌套键时遇到问题
- sql - 帐户上的 SFDC 数据加载器 - 相同的 ID,不同的字段值
- javascript - 单击时单选按钮不执行 JavaScript 操作
- r - 为 r 中的多个水平创建置信区间图