From cd244a82c84770041903555539de03205c55cf17 Mon Sep 17 00:00:00 2001 From: luke Date: Fri, 7 Aug 2026 17:14:16 +0900 Subject: [PATCH 1/2] Skip MSBuild-only package files --- .../Assets/Tests/Editor/NuGetTests.cs | 7 +++++++ src/NuGetForUnity/Editor/PackageContentManager.cs | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/NuGetForUnity.Tests/Assets/Tests/Editor/NuGetTests.cs b/src/NuGetForUnity.Tests/Assets/Tests/Editor/NuGetTests.cs index 33680a7e..8d5ee51e 100644 --- a/src/NuGetForUnity.Tests/Assets/Tests/Editor/NuGetTests.cs +++ b/src/NuGetForUnity.Tests/Assets/Tests/Editor/NuGetTests.cs @@ -59,6 +59,13 @@ 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)); + } + [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..aff3391d 100644 --- a/src/NuGetForUnity/Editor/PackageContentManager.cs +++ b/src/NuGetForUnity/Editor/PackageContentManager.cs @@ -146,6 +146,16 @@ 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; + } + // For now, skip src. We may use it later... if (path.StartsWith("src/", StringComparison.Ordinal) || path.Contains("/src/")) { From f160fe634d31c78193b4edc850115bd3376d5ed3 Mon Sep 17 00:00:00 2001 From: luke Date: Tue, 11 Aug 2026 12:12:45 +0900 Subject: [PATCH 2/2] Skip Unity-incompatible analyzer DLLs --- .../Assets/Tests/Editor/NuGetTests.cs | 13 +++++++++++++ src/NuGetForUnity/Editor/PackageContentManager.cs | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/src/NuGetForUnity.Tests/Assets/Tests/Editor/NuGetTests.cs b/src/NuGetForUnity.Tests/Assets/Tests/Editor/NuGetTests.cs index 8d5ee51e..0b53fd75 100644 --- a/src/NuGetForUnity.Tests/Assets/Tests/Editor/NuGetTests.cs +++ b/src/NuGetForUnity.Tests/Assets/Tests/Editor/NuGetTests.cs @@ -66,6 +66,19 @@ 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 aff3391d..1e5a1619 100644 --- a/src/NuGetForUnity/Editor/PackageContentManager.cs +++ b/src/NuGetForUnity/Editor/PackageContentManager.cs @@ -156,6 +156,13 @@ internal static bool ShouldSkipUnpackingOnPath([NotNull] string path, PackageIns 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/")) {