Proj0037: Exclude runtime when all assets are private
For some <PackageReference>
s (code generators, analyzers, etc.) the
referenced package does not contain any assembly that should be accessible
runtime. This is indicated by PrivateAssets="all"
. Without also specifying
ExcludeAssets="runtime"
however, the IDE might still suggest to access code
shipped with the package which would fail runtime.
Non-compliant
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="DotNetProjectFile.Analyzers" Version="1.5.10.1" PrivateAssets="all" />
</ItemGroup>
</Project>
Compliant
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="DotNetProjectFile.Analyzers" Version="1.5.10.1" PrivateAssets="all" ExcludeAssets="runtime" />
</ItemGroup>
</Project>