我有一个多平台解决方案,其中许多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编辑器识别特定的目标框架(net452
,netstandard1.4
(,并至少暂时获得IntelliSense?
作为参考,我使用的是VS2017专业版15.2(26430.16(。
答案如下:
- Visual Studio 2017在编辑器顶部包含3个组合框。在版本 15.1 或更高版本上,最左侧的组合允许选择要编辑的框架。这将根据所选框架更改
#if
块的语法突出显示。 - IntelliSense似乎涵盖了
TargetFrameworks
上声明的所有项目,即使文本在编辑器中显示为灰色。
总而言之,这只是我的学习曲线。