При запуске проекта MRTK2 выдается «Не удалось разрешить System.Reflection.BindingFlags» - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь перенести свой проект с 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.0 и Target SDK Version 10.0.18362.0

Это также происходит с новым пустым проектом Unity, построение примера также выдаст эту ошибку.

Ответы [ 2 ]

1 голос
/ 13 июня 2019

У меня была похожая проблема, и чтобы исправить ее, я перешел на бэкэнд il2cpp.

0 голосов
/ 18 июня 2019

Понимая, что это может быть не только я, я отправил проблему в github MRTK .Оказывается, это ошибка в Visual Studio, и они работают над ее устранением в Microsoft.

Есть два способа ее решения , либо установите минимальную версию Windows версии 15063 или измените вашпоказ .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.

...