Visual Studio:如何更改编辑器使用的目标框架?

6

我有一个多平台的解决方案,其中有许多csproj文件是这样配置的:

<PropertyGroup>
  <TargetFrameworks>net452;netstandard1.4</TargetFrameworks>    
</PropertyGroup>

<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.4' ">    
  <PackageReference Include="System.Net.Http" Version="4.3.0"/>
  <PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
</ItemGroup>

<ItemGroup Condition=" '$(TargetFramework)' == 'net452' ">
  <Reference Include="System.Net" />
  <Reference Include="System.Net.Http" />
  <PackageReference Include="Newtonsoft.Json" Version="6.0.8" />
</ItemGroup>

请注意,我没有一个TargetFramework元素(单数形式),我只有TargetFrameworks元素(复数形式)。
编辑器假定是netstandard1.4,并且所有的#if NET452块都会变灰,没有智能感知。
我该如何告诉Visual Studio编辑器识别特定的目标框架(net452netstandard1.4),并至少临时获得智能感知?
参考资料,我正在使用VS2017专业版15.2(26430.16)。

你没有TargetFramework元素?但它是什么?<TargetFrameworks>net452;netstandard1.4</TargetFrameworks> - Alexan
那是复数形式,我没有单数形式。 看起来编辑器总是选择.netstandard1.4。所有的#if NET452块都被变灰了,并且没有智能感知。 - fernacolo
整个 .NETStandard 的目的就是永远不必这样做。所以唯一合乎逻辑的事情就是不要这样做,无论如何都会让你迟早后悔。嗯,更早些。 - Hans Passant
@HansPassant 有没有一些技巧可以在我们达不到那个目标时使用?例如,定义一些环境变量,比如NET452?或者改变一些配置? - fernacolo
1个回答

6
这里是答案:
  • Visual Studio 2017 的编辑器顶部包含3个组合框。在15.1及以上版本中,最左侧的组合框允许选择要编辑的框架。这将根据所选框架更改 #if 块的语法高亮。
  • 即使文本在编辑器中变灰,IntelliSense 似乎覆盖了所有在 TargetFrameworks 中声明的项目。
总的来说,这只是我的学习曲线。

有人知道哪个设置可以切换这些组合框的开/关吗?因为即使在VS 2022中,我也没有它们。 - Ilyan
更新:它是工具 -> 文本编辑器 -> C# -> 通用 -> 导航栏 - Ilyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接