NuGet provides the "ExcludeAssets" setting to allow excluding analyzers from packages. However, it appears the SDK still includes analyzers in the build even if excluded.
(cref https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#controlling-dependency-assets)
Repro
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
<PackageReference Include="xunit.analyzers" Version="0.1.0" ExcludeAssets="analyzers" />
</ItemGroup>
</Project>
using System;
using Xunit;
namespace test1
{
public class UnitTest1
{
[Fact]
public void Test1(string data) // this line intentionally trips an error in xunit.analyzers...just to prove the analyzer is running
{
}
}
}
dotnet restore
dotnet build
Expected
The analyzer in xunit.analzyers/0.1.0/analyzers/dotnet/cs/xunit.analyzers.dll should not have been passed to CSC, and build succeeds.
Result
Build FAILED.
UnitTest1.cs(9,21): error xUnit1001: Fact methods cannot have parameters [C:\tmp\test1\test1.csproj]
0 Warning(s)
1 Error(s)
Details
Using dotnet.exe 2.0.0-preview2-006067
project.assets.json file contains:
{
// ...
"libraries": {
"xunit.analyzers/0.1.0": {
"sha512": "wPHthUmM0vdhL3lrTlyxJFfTgGh+2bkOn5CuxgZaPEMxLJArMCvUx8WmsVFeIATLVulVGvwNnZFkuwc0lsun7g==",
"type": "package",
"path": "xunit.analyzers/0.1.0",
"files": [
"analyzers/dotnet/cs/xunit.analyzers.dll",
"tools/install.ps1",
"tools/uninstall.ps1",
"xunit.analyzers.0.1.0.nupkg.sha512",
"xunit.analyzers.nuspec"
]
}
},
// ...
"project": {
"frameworks": {
"netcoreapp2.0": {
"dependencies": {
// ...
"xunit.runner.visualstudio": {
"target": "Package",
"version": "2.2.0"
},
"xunit.analyzers": {
"include": "Runtime, Compile, Build, Native, ContentFiles",
"target": "Package",
"version": "0.1.0"
},
// ...
}
}
}
}
}
NuGet provides the "ExcludeAssets" setting to allow excluding analyzers from packages. However, it appears the SDK still includes analyzers in the build even if excluded.
(cref https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#controlling-dependency-assets)
Repro
Expected
The analyzer in
xunit.analzyers/0.1.0/analyzers/dotnet/cs/xunit.analyzers.dllshould not have been passed to CSC, and build succeeds.Result
Details
Using dotnet.exe 2.0.0-preview2-006067
project.assets.json file contains: