Search Issue Tracker

Won't Fix

Votes

0

Found in

2018.2.16f1

Issue ID

1105403

Regression

No

DLL Placeholder values cannot be found when DLL is in a local package

Packman

-

-

Priority: 3Not yet prioritized for a release

-

Severity: 3Secondary functionality broken

How to reproduce:
1. Download and extract the "1105403_repro.zip" archive
2. Open the "1105403_project"
3. Observe the errors in the Console window
4. In the Project window, select Packages/Holo<...> FileServer/Assemblies/AOT/Newtonsoft.Json
5. In the Inspector, observe that the Placeholder value

Expected result: Placeholder values are found and are non-empty; no "Failed to find placeholder" errors in the Console.
Actual result: Placeholder values are empty; "Failed to find placeholder" errors thrown in the Console.

Reproducible with - 2018.2.20f1, 2018.3.0a1, 2018.3.5f1, 2019.1.0b3, 2019.2.0a5
Not tested on 2017.4, since Packages folder (in Project window) was not yet introduced.

Errors thrown:
Failed to find a placeholder ('Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll') for 'Packages/com.<...>/Assemblies/AOT/Newtonsoft.Json.dll', ensure it exists, or change plugin settings for 'Packages/com.com.<...>/Assemblies/AOT/Newtonsoft.Json.dll' accordingly.
UnityEditorInternal.InternalEditorUtility:GetPrecompiledAssemblies(Boolean, BuildTargetGroup, BuildTarget)
UnityEditorInternal.InternalEditorUtility:GetMonoIslandsForPlayer() (at C:/buildslave/unity/build/Editor/Mono/InternalEditorUtility.cs:390)
System.Reflection.MethodBase:Invoke(Object, Object[])
SyntaxTree.VisualStudio.Unity.Bridge.CompilationUnit:CompilationUnits(String)
SyntaxTree.VisualStudio.Unity.Bridge.CompilationUnit:CompilationUnitsForPlayer()
<...>

Response avatar

Resolution Note:

The issue arises because the .meta files in the package project reference the placeholder using relative path, which is specific to that project. When you treat that project as a package, the paths will obviously point to the wrong location on disk. The solution here is to configure the placeholder from the project that's referencing a package. That way it gets configured in a package context and will work for any projects that include the package.

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.