C # Windows IoT Core Фоновые перенаправления сборки приложений - PullRequest
0 голосов
/ 17 апреля 2019

Я настраиваю свое первое фоновое приложение Windows IoT Core, работающее на Raspberry Pi, но у меня возникла проблема с конфликтующими версиями сборки, и я не смог их разрешить.

В частности, я получаю сообщение об ошибке, которое гласит:

No way to resolve conflict between "System.Data.Common, Version=4.2.1.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "System.Data.Common, 
Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Choosing 
"System.Data.Common, Version=4.2.1.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a" arbitrarily.

При ближайшем рассмотрении существует две версии System.Data.Common.dll, на которые ссылается мое приложение.

Первый идет из установленного пакета Microsoft.NETCore.UniversalWindowsPlatform (v 6.2.8). Версия System.Data.Common для сборки здесь 4.2.1.0 (это версия, которую я хочу использовать):

Assembly System.Data.Common version 4.2.1.0

C:\Users\mikel\.nuget\packages\Microsoft.NETCore.UniversalWindowsPlatform\6.2.8\ref\uap10.0.15138\System.Data.Common.dll

Второе, по-видимому, включено как зависимость с .netstandard:

Assembly System.Data.Common version 4.1.0.0

C:\Users\mikel\.nuget\packages\System.Data.Common\4.3.0\ref\netstandard1.2\System.Data.Common.dll

Мне немного сложнее определить, что именно заставляет NuGet загрузить и установить второй пакет. Возможно, один из моих других пакетов, который мне нужен, ссылается на него как на зависимость (не уверен).

В любом случае, я бы хотел настроить переназначение привязки сборки, чтобы любая попытка обратиться к 4.1.0.0 перенаправляла и использовала 4.2.1.0.

Когда я делаю сборку своего проекта, я получаю это предупреждение:

1>  Consider app.config remapping of assembly "System.Data.Common, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a" from Version "4.1.0.0" 
[C:\Users\mikel\.nuget\packages\System.Data.Common\4.3.0\ref\netstandard1.2\System.Data.Common.dll] 
to Version "4.2.1.0" 
[C:\Users\mikel\.nuget\packages\Microsoft.NETCore.UniversalWindowsPlatform\6.2.8\ref\uap10.0.15138\System.Data.Common.dll] 
to solve conflict and get rid of warning.

Однако из того, что я прочитал, универсальные проекты Windows не поддерживают использование файлов app.config. В любом случае, я добавил файл app.config в корень моего проекта, установил действие сборки на Embedded Resource, выбрал Copy Always и поместил его в файл (без изменений):

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Data.Common" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="4.1.0.0" newVersion="4.2.1.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Я также попытался установить формат управления проектом NuGet на PackageReference и добавил <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> к каждой PropertyGroup в моем файле .csproj. Это не оказало никакого влияния.

Мои цели проекта Universal Windows следующие:

Целевая версия: Windows 10 Fall Creators Update (10.0; Build 16299)

Минимальная версия: Windows 10 Fall Creators Update (10.0; Build 16299)

Я также должен заявить, что я хочу использовать версию сборки 4.2.1.0, поскольку в 4.1.0.0 отсутствует несколько вещей, которые мне нужны для реализации оболочки, которую я использую вокруг SQLite. Я предпочитаю не переписывать эти обертки.

В этот момент я очень озадачен тем, как разрешить этот конфликт. Как включить перенаправление привязки для устранения этой ошибки?

enter image description here

Любая помощь будет принята с благодарностью.

...