Как заменить / переопределить пути сборки MSBuild разрешил во время сборки (ошибка приманки и переключения)? - PullRequest
0 голосов
/ 29 апреля 2019

Кажется, у меня проблема с ProjectReference Include (в настоящее время на VS 2019 и VS 2017), когда целью является NET 4.6.1 и используются рабочие или веб-роли, а также пакеты, такие как System.Runtime.CompilerServices.Unsafe.Результатом является сбой во время выполнения, который не может быть загружен некоторым типом, таким как ReadOnlySpan, если зависимая библиотека / пакет Nuget или код использует его напрямую или функции, такие как AsSpan.

Переход в пакеты Nuget изамена ref пакетов на lib исправляет проблему.Я быстро попытался исправить цель, как предложено в https://github.com/xamarin/xamarin-android/issues/1162#issuecomment-359475008,, но она не работает.MSBuild сообщает

Цель "_ResolveAssemblies", указанная в атрибуте AfterTargets в "\ ReplaceRefAssemblies.targets (2,39)", не существует в проекте и будет игнорироваться.

Что, кажется, указывает на то, что конкретный AfterTargets из _ResolveAssemblies не существует.Пытаясь просмотреть MSBuild Structured Log Viewer Я также не могу найти подходящую альтернативу.Отсюда возникает вопрос: где я мог бы принудительно ссылать сборки на их фактические аналоги lib?Или, в качестве альтернативы, есть другой способ решения проблемы (в общем случае?

. Об этом есть открытая проблема GH по адресу https://github.com/Microsoft/msbuild/issues/2776#issuecomment-487363546, где я также записал наблюдения.

<Project>
  <Target Name="ReplaceRefAssemblies" AfterTargets="_ResolveAssemblies">
    <ItemGroup>
      <ResolvedAssembliesFixedWindows Include="@(ResolvedAssemblies->Replace('\ref\','\lib\'))" />
      <ResolvedAssembliesFixedUnix Include="@(ResolvedAssemblies->Replace('/ref/','/lib/'))" />
      <ResolvedAssembliesFixed Include="@(ResolvedAssembliesFixedWindows)" Condition="@(ResolvedAssembliesFixedWindows) != @(ResolvedAssemblies)" />
      <ResolvedAssembliesFixed Include="@(ResolvedAssembliesFixedUnix)" Condition="@(ResolvedAssembliesFixedUnix) != @(ResolvedAssemblies)" />
      <ResolvedAssemblies Condition="'@(ResolvedAssembliesFixed->Count())' &gt; 0" Remove="@(ResolvedAssemblies)" />
      <ResolvedAssemblies Include="@(ResolvedAssembliesFixed)" />
    </ItemGroup>
  </Target>
</Project>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...