我有一个Visual Studio解决方案,我正在尝试在所有项目中使用build prop文件添加代码分析器。我有依赖于.NET Core和框架的项目。我有下面的Directory.Build.Prop文件。
<Project>
<Choose>
<When Condition="$(UsingMicrosoftNETSdk) == 'true'">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'">
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<RunCodeAnalysis>true</RunCodeAnalysis>
</PropertyGroup>
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory).editorconfig" Link=".editorconfig" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="5.0.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</When>
<Otherwise>
</Otherwise>
</Choose>
</Project>
现在,我可以使用属性
UsingMicrosoftNETSdk
来区分.Net Core和框架项目,因为所有新的核心项目都使用SDK风格的项目,而框架项目则不是。但我不确定在“否则”部分应该添加什么内容才能将这些分析器添加到其中。由于所使用的分析器是平台无关的,我尝试使用包引用或引用元素来添加它。但它并没有按预期工作,我发现分析器不起作用,而且还会搞乱框架项目中的其他引用(引用上出现警告标志,项目无法构建)。
此外,我认为这与框架项目中的包引用在packages.config文件中进行管理有关,但我不确定是否可以从build.props中对其应用某些内容。
更新1
。我们提供了更多的解决方案。 - undefinedpackagereference
节点位于csproj文件中。你知道解决方案资源管理器的引用列表中缺少这些NuGet包吗?如果是的话,卸载项目,然后重新加载项目,使用详细的构建日志,我可以在输出窗口中看到NuGet包。确保csproj
文件的packagereference
节点下没有ExcludeAssets
节点,确保web.config
文件上没有其他限制节点。如果这些方法都没有帮助,请与我们分享web.config
和csproj文件的packagereference
节点。 - undefined