diff --git a/src/NuGetForUnity.Tests/Assets/Tests/Editor/NuGetTests.cs b/src/NuGetForUnity.Tests/Assets/Tests/Editor/NuGetTests.cs index 33680a7e..0b53fd75 100644 --- a/src/NuGetForUnity.Tests/Assets/Tests/Editor/NuGetTests.cs +++ b/src/NuGetForUnity.Tests/Assets/Tests/Editor/NuGetTests.cs @@ -59,6 +59,26 @@ public void LoadConfigFileTest() Assert.Pass(); } + [TestCase("buildTransitive/config/analysislevel.globalconfig")] + [TestCase("rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled.ruleset")] + public void SkipMsBuildOnlyFilesTest(string path) + { + Assert.IsTrue(PackageContentManager.ShouldSkipUnpackingOnPath(path, null)); + } + + [TestCase("analyzers/roslyn4.3/cs/MessagePack.Analyzers.CodeFixes.dll")] + [TestCase("analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll")] + public void SkipUnityIncompatibleAnalyzerTest(string path) + { + Assert.IsTrue(PackageContentManager.ShouldSkipUnpackingOnPath(path, null)); + } + + [Test] + public void KeepMessagePackSourceGeneratorTest() + { + Assert.IsFalse(PackageContentManager.ShouldSkipUnpackingOnPath("analyzers/roslyn4.3/cs/MessagePack.SourceGenerator.dll", null)); + } + [Test] [Order(2)] public void InstallJsonTest([Values] InstallMode installMode) diff --git a/src/NuGetForUnity/Editor/PackageContentManager.cs b/src/NuGetForUnity/Editor/PackageContentManager.cs index 3c8cf633..1e5a1619 100644 --- a/src/NuGetForUnity/Editor/PackageContentManager.cs +++ b/src/NuGetForUnity/Editor/PackageContentManager.cs @@ -146,6 +146,23 @@ internal static bool ShouldSkipUnpackingOnPath([NotNull] string path, PackageIns return true; } + if (path.StartsWith("buildTransitive/", StringComparison.Ordinal) || path.Contains("/buildTransitive/")) + { + return true; + } + + if (path.StartsWith("rulesets/", StringComparison.Ordinal) || path.Contains("/rulesets/")) + { + return true; + } + + if ((path.StartsWith("analyzers/", StringComparison.Ordinal) || path.Contains("/analyzers/")) && + (path.EndsWith(".CodeFixes.dll", StringComparison.Ordinal) || + Path.GetFileName(path).StartsWith("Microsoft.CodeAnalysis.", StringComparison.Ordinal))) + { + return true; + } + // For now, skip src. We may use it later... if (path.StartsWith("src/", StringComparison.Ordinal) || path.Contains("/src/")) {