0

我正在尝试将我的项目从 Unity 2017 LTS 移植到 2018 LTS 和 MRTK2。在我尝试在 HoloLens 1 模拟器上运行该项目之前,一切都很顺利。

我收到以下错误:

1>  System.Exception: Failed to resolve System.Reflection.BindingFlags
1>     at Unity.ModuleContext.Retarget(TypeReference type, GenericContext context)
1>     at Unity.ModuleContext.Retarget(MethodReference method, GenericContext context)
1>     at Unity.FixReferencesStep.Visit(MethodDefinition method, GenericContext context)
1>     at Unity.FixReferencesStep.Visit(TypeDefinition type)
1>     at Unity.TypeDefinitionDispatcher.DispatchType(TypeDefinition type)
1>     at Unity.TypeDefinitionDispatcher.DispatchType(TypeDefinition type)
1>     at Unity.TypeDefinitionDispatcher..ctor(ModuleDefinition module, ITypeDefinitionVisitor visitor)
1>     at Unity.FixReferencesStep.ProcessModule()
1>     at Unity.ModuleStep.Execute()
1>     at Unity.FixReferencesStep.Execute()
1>     at Unity.Step.Execute(OperationContext operationContext, IStepContext previousStepContext)
1>     at Unity.Operation.Execute()
1>     at Unity.Program.Main(String[] args)

搜索这个错误什么也没给我,我没有更改 Unity 构建的项目。我正在运行它Debug并为x86. 我正在通过普通的 Unity Build 窗口进行构建。

使用Minimum Platform Version 10.0.17134.0Target SDK Version 10.0.18362.0

新的空 Unity 项目也会发生这种情况,构建示例也会出现此错误。

4

2 回答 2

1

我有一个类似的问题,为了解决这个问题,我改成了 il2cpp 后端。

于 2019-06-13T15:36:38.123 回答
1

意识到这可能不仅仅是我,我在 MRTK github 中提交了一个问题。事实证明这是 Visual Studio 中的一个错误,他们正在与 Microsoft 一起解决它。

有两种解决方法,将 Windows 版本 15063 作为最低版本或更改yourpoject .csproj。

如果您不想更改最低版本,请执行以下步骤:

  1. 在文本编辑器中打开你的项目 .csproj

  2. 找到线<Target Name="BeforeResolveReferences" Condition="'$(BuildingProject)' == 'true'">

  3. 用。。。来代替:

    <UsingTask TaskName="FixProjectJson" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
        <ParameterGroup />
        <Task>
          <Using Namespace="System" />
          <Using Namespace="System.IO" />
          <Code Type="Fragment" Language="cs">
            <![CDATA[File.WriteAllText("project.lock.json", File.ReadAllText("project.lock.json").Replace("ref/netstandard1.5/System.Reflection.TypeExtensions.dll", "ref/netstandard1.3/System.Reflection.TypeExtensions.dll"));]]>
          </Code>
        </Task>
      </UsingTask>
      <Target Name="BeforeResolveReferences" Condition="'$(BuildingProject)' == 'true'">
    
  4. 找到线<Message Importance="high" Text="Running AssemblyConverter..." />

  5. 用。。。来代替:

    <Message Importance="high" Text="Running AssemblyConverter..." />
    <FixProjectJson />
    

完成此操作后,我的项目最终编译,我能够在 HoloLens 2 模拟器中运行它。

于 2019-06-18T12:14:34.440 回答