Quick answer: Two copies of the same DLL are in the project, usually Newtonsoft.Json.dll bundled by an Asset Store package plus Unity's com.unity.nuget.newtonsoft-json package. Find both, keep the package-managed one, and delete or disable the bundled copy for every platform. Scripts will not compile until it is resolved.
This error blocks compilation entirely, and it tends to appear right after importing an asset or adding a Unity package that depends on JSON. The fix is mechanical once you know where the second copy is.
The exact error
Multiple precompiled assemblies with the same name Newtonsoft.Json.dll included on the current platform. Only one assembly with the same name is allowed per platform. (Assets/Plugins/Newtonsoft.Json.dll)
Newtonsoft.Json is the most common, but the same happens with System.Memory.dll, System.Runtime.CompilerServices.Unsafe.dll, Google.Protobuf.dll and other shared libraries.
Step 1: find every copy
The error names one path; find the other. Search both Assets and the package cache, because Unity packages live outside Assets:
# macOS / Linux
find Assets Library/PackageCache Packages -name "Newtonsoft.Json.dll"
# Windows PowerShell
Get-ChildItem -Recurse -Filter Newtonsoft.Json.dll -Path Assets,Library\PackageCache,Packages
Typical result: one copy in Assets/Plugins or inside an Asset Store package folder, and one in Library/PackageCache/com.unity.nuget.newtonsoft-json@x.y.z. Many Unity packages (Unity Services, Addressables in some versions, Version Control and others) pull in the Newtonsoft package as a dependency, which is why the conflict appears when you install something unrelated.
Step 2: keep one
- Keep the package version. Unity packages depend on it and update it; deleting a dependency package just brings it back.
- Delete the copy under
Assets(and its.meta). If the asset that shipped it insists on its own copy, select the DLL instead and untick every platform in the Plugin Inspector, so it is never included. - If you only have the
Assetscopy and no package, you can also replace it with the package: addcom.unity.nuget.newtonsoft-jsonthrough Package Manager > Add package by name, then delete the DLL.
Unity recompiles as soon as only one copy is included for the current platform.
If both copies are in packages
When two different packages each embed the same DLL, you cannot delete either from the package cache; it is regenerated. Embed the package that should not ship the DLL (copy its folder from Library/PackageCache into Packages/), remove or disable the DLL in that embedded copy, and report it to the package author. Check first whether an update of either package already fixed it.
Version mismatches after the fix
Code written against the deleted copy may expect a different version. If you now see errors such as missing methods or Assembly 'X' has reference to non-existent assembly, the asset was built against an older Newtonsoft version. Update the asset, or pin the Newtonsoft package to a compatible version in Packages/manifest.json.
Builds with IL2CPP
Once it compiles, remember that Newtonsoft.Json uses reflection, and IL2CPP's managed code stripping can remove types it needs at runtime. Unity's package version includes the necessary link settings, which is another reason to keep it rather than a random bundled DLL.
Serialization errors in players’ builds
JSON errors caused by stripping or version mismatches usually appear only in builds, when a save file or server response fails to parse on a player's device. Bugnet's Unity SDK hooks Unity's log stream, so exceptions and errors in a player's build are filed automatically with the last log lines, a screenshot, the device, OS and build version, and identical ones stack into a single issue with a count.
Related problems
- How to Fix Unity Assembly Definition Reference Errors
- How to Fix “The type or namespace could not be found” in Unity
- Fix: Unity IL2CPP Stripping Removes Needed Types
Frequently asked questions
How do I fix “Multiple precompiled assemblies with the same name Newtonsoft.Json.dll”?
Find both copies of the DLL, keep the one from the com.unity.nuget.newtonsoft-json package, and delete or disable the copy under Assets.
Why did this error appear after installing a Unity package?
Many Unity packages depend on the Newtonsoft JSON package. If an asset already shipped its own Newtonsoft.Json.dll, the project now has two.
Can I disable a DLL instead of deleting it?
Yes. Select it, untick every platform in the Plugin Inspector and apply. It stays in the project but is never compiled or included.
Package Manager owns shared libraries. Delete the copies that rode in with assets.