Nuget, переносимая библиотека и приложение WinRT: полезная нагрузка содержит два или более файла с одним и тем же путем назначения.

  1. Создать новое приложение Windows 8 App1
  2. Добавить проект библиотеки классов ClassLibrary1 Windows 8 в решение
  3. Добавьте в решение PortableClassLibrary1 переносимую библиотеку классов для Windows 8 и Windows Phone 7.5.
  4. Ссылка на пакет HttpClient nuget в ClassLibrary1
  5. Ссылка на пакет HttpClient nuget в PortableClassLibrary1
  6. Ссылка на ClassLibrary1 и PortableClassLibrary1
  7. Скомпилировать решение

Вы получаете сообщение об ошибке на этапе пакета .appx

Payload contains two or more files with the same destination path 'System.Net.Http.Primitives.dll'. 
Source files: 
\Projects\App1\PortableClassLibrary1\bin\Debug\System.Net.Http.Primitives.dll
\Projects\App1\packages\Microsoft.Net.Http.2.2.13\lib\win8\System.Net.Http.Primitives.dll

Обратите внимание, что та же ошибка воспроизводится, если вы ссылаетесь на любой пакет nuget, содержащий как win8, так и портативные смеси сборок.

Что ожидается: наиболее конкретная версия библиотеки (для Win8) упакована в .appx, а переносная версия игнорируется.

Любые идеи о том, как обмануть упаковщика appx и создать такие проекты для Windows 8?


person kza    schedule 22.08.2013    source источник


Ответы (3)



Похоже, что описанное здесь решение работает: путь/">http://cyanbyfuchsia.wordpress.com/2013/05/03/payload-contains-two-or-more-files-with-the-same-destination-path/

По сути, вы должны установить для параметра «Копировать локально» значение false в проекте WinRT, на который ссылается основное приложение.

person japf    schedule 22.08.2013
comment
Подход, который я выбрал, заключался в том, чтобы добавить пакет NuGet в основное приложение, а затем убедиться, что для всех библиотек, на которые ссылаются, для параметра Copy local установлено значение false в ссылках. Таким образом, проект приложения является мастером включения этих файлов. У меня также были предупреждения, говорящие мне установить Microsoft.Bcl.Build, но это не помогло. - person RandomEngy; 16.06.2015
comment
Я получал эту ошибку, потому что в моем проекте UnitTesting также есть папка Assets. Поскольку модульным тестам не нужны эти ресурсы (логотипы, значки и т. д.), я просто удалил их. - person WiteCastle; 09.04.2017

У меня была такая проблема тоже. Это было потому что я поделился одним из своих решений между проектами. Пришлось переименовать решение, потому что название было все равно как у одного из проектов. После переименования у меня была эта проблема.

Я исправил это: щелкните правой кнопкой мыши решение, которое я переименовал и использовал оба проекта, затем свойства, затем используйте то же имя в имени сборки, что и имя решения.

person Zéiksz    schedule 29.12.2013