Skip to content

feat: upgrade to dynamic DLL dependency system#12

Merged
IvanMurzak merged 2 commits intomainfrom
feat/dynamic-dll-dependency-system
Apr 17, 2026
Merged

feat: upgrade to dynamic DLL dependency system#12
IvanMurzak merged 2 commits intomainfrom
feat/dynamic-dll-dependency-system

Conversation

@IvanMurzak
Copy link
Copy Markdown
Owner

Summary

Adopts the new dynamic DLL dependency system provided by com.ivanmurzak.unity.mcp 0.64.0. NuGet-backed dependencies are now resolved dynamically by the core MCP package at runtime instead of being declared as OpenUPM scoped-registry packages.

Changes

  • Bump com.ivanmurzak.unity.mcp 0.63.3 -> 0.64.0
  • Drop org.nuget.* scopes from package.json and Packages/manifest.json
  • Drop org.nuget.* package IDs from Installer.Manifest.cs
  • Gate compilation with UNITY_MCP_READY define constraint on all asmdefs (Editor / Runtime / Editor.Tests / Tests)
  • Clean up obsolete Installer test fixtures and tests covering the removed NuGet scopes

Rationale

Previously each extension had to replicate the full set of NuGet scoped registries (org.nuget.com.ivanmurzak, org.nuget.microsoft, org.nuget.system, org.nuget.r3). The new dynamic DLL dependency system in the core MCP package removes this duplication and makes extensions leaner. The UNITY_MCP_READY define constraint prevents extension assemblies from attempting to compile before the core package has finished resolving its dynamic dependencies.

Test plan

  • Open the Unity-Package project in Unity and verify it compiles cleanly after Unity MCP resolves its dynamic DLLs
  • Run Editor and PlayMode tests in the Unity-Package
  • Open the Installer project and run ManifestInstallerTests
  • Install the package into a fresh Unity project via the Installer and confirm the manifest is populated correctly

Adopt the new dynamic DLL dependency system provided by
com.ivanmurzak.unity.mcp 0.64.0. NuGet-backed dependencies are now
resolved dynamically by the core MCP package at runtime instead of being
declared as OpenUPM scoped-registry packages.

- Bump com.ivanmurzak.unity.mcp 0.63.3 -> 0.64.0
- Drop org.nuget.* scopes from package.json and Packages/manifest.json
- Drop org.nuget.* package IDs from Installer.Manifest.cs
- Gate compilation with UNITY_MCP_READY define constraint on all asmdefs
- Clean up obsolete Installer test fixtures and tests
Copilot AI review requested due to automatic review settings April 17, 2026 03:22
@IvanMurzak IvanMurzak self-assigned this Apr 17, 2026
@IvanMurzak IvanMurzak added the enhancement New feature or request label Apr 17, 2026
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adopts MCP’s dynamic DLL dependency system by removing NuGet scoped-registry duplication and gating compilation until MCP is ready.

Changes:

  • Removes org.nuget.* scoped registries / package IDs from Unity manifests and Installer manifest normalization fixtures
  • Adds UNITY_MCP_READY define constraints to Runtime/Editor and test asmdefs
  • Refactors Installer manifest normalization tests to be per-fixture test cases and offline-safe

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
Unity-Package/Unity-Package.slnx Removes project entries from the solution definition
Unity-Package/Packages/packages-lock.json Updates locked MCP/playerprefsex versions
Unity-Package/Packages/manifest.json Drops NuGet scopes from scoped registry configuration
Unity-Package/Assets/root/package.json Drops org.nuget scope from OpenUPM registry config
Unity-Package/Assets/root/Tests/Runtime/com.IvanMurzak.Unity.MCP.ParticleSystem.Tests.asmdef Adds UNITY_MCP_READY constraint and updates test references/precompiled refs
Unity-Package/Assets/root/Tests/Editor/com.IvanMurzak.Unity.MCP.ParticleSystem.Editor.Tests.asmdef Adds UNITY_MCP_READY constraint and updates test references/precompiled refs
Unity-Package/Assets/root/Runtime/com.IvanMurzak.Unity.MCP.ParticleSystem.Runtime.asmdef Gates runtime assembly compilation on UNITY_MCP_READY
Unity-Package/Assets/root/Editor/Scripts/com.IvanMurzak.Unity.MCP.ParticleSystem.Editor.asmdef Gates editor assembly compilation on UNITY_MCP_READY
Installer/Assets/com.IvanMurzak/AI Particle System Installer/Tests/ManifestInstallerTests.cs Converts combined test into per-fixture test cases and uses offline-safe overload
Installer/Assets/com.IvanMurzak/AI Particle System Installer/Tests/Files/* Removes/updates fixtures to reflect dropped NuGet scopes
Installer/Assets/com.IvanMurzak/AI Particle System Installer/Installer.Manifest.cs Removes org.nuget.* scoped package IDs from installer manifest logic

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 3 to 5
"com.ivanmurzak.unity.mcp": {
"version": "0.51.5",
"version": "0.63.3",
"depth": 0,
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR description says com.ivanmurzak.unity.mcp is bumped to 0.64.0, but packages-lock.json is pinned to 0.63.3 (and previously was 0.51.5). Please regenerate/update the lockfile so the pinned MCP version matches the intended upgrade, otherwise Unity will resolve to the older version.

Copilot uses AI. Check for mistakes.
Comment on lines +9 to +10
"UnityEngine.TestRunner",
"UnityEditor.TestRunner"
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Runtime tests asmdef has includePlatforms: [] (i.e., it can compile for player) but it references UnityEditor.TestRunner, which is editor-only. This will break compilation for PlayMode/player test runs and any non-Editor build target. Fix by removing UnityEditor.TestRunner from the Runtime test assembly references, or constrain this asmdef to the Editor platform if it truly requires editor-only APIs.

Suggested change
"UnityEngine.TestRunner",
"UnityEditor.TestRunner"
"UnityEngine.TestRunner"

Copilot uses AI. Check for mistakes.
Comment on lines +24 to 31
// Fixture names are enumerated once at test-discovery time so each appears as
// its own test case in the runner — a failure points at a specific fixture
// instead of hiding inside a single combined "All" test.
static IEnumerable<string> FixtureNames()
{
Debug.Log($"[{nameof(ManifestInstallerTests)}] SetUp");
Directory.CreateDirectory(FilesCopyRoot);
foreach (var path in Directory.GetFiles(FilesRoot, "*.json", SearchOption.TopDirectoryOnly))
yield return Path.GetFileName(path);
}
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TestCaseSource evaluates at discovery time; Directory.GetFiles(FilesRoot, ...) will throw and prevent any test cases from being discovered if the working directory differs or the folder isn't present in a given runner context. Consider making this discovery-time code resilient (e.g., use an absolute path rooted to the project, or handle missing directory by returning an empty sequence and failing inside the test with a clear assertion).

Copilot uses AI. Check for mistakes.
Comment on lines 1 to 2
<Solution>
<Project Path="com.IvanMurzak.Unity.MCP.ParticleSystem.Editor.csproj" />
<Project Path="com.IvanMurzak.Unity.MCP.ParticleSystem.Editor.Tests.csproj" />
<Project Path="com.IvanMurzak.Unity.MCP.ParticleSystem.Tests.csproj" />
</Solution>
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change leaves the .slnx solution file with no <Project> entries, which makes the solution effectively empty for IDE tooling that relies on it. If the goal is to stop generating/using this solution, consider deleting the file entirely; otherwise, keep the relevant project entries so opening the solution still provides the expected projects.

Copilot uses AI. Check for mistakes.
@IvanMurzak IvanMurzak merged commit f45ccc3 into main Apr 17, 2026
55 checks passed
@IvanMurzak IvanMurzak deleted the feat/dynamic-dll-dependency-system branch April 17, 2026 07:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants