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

  • Создайте новое приложение Windows 8 App1
  • Добавить ClassLibrary1 Проект библиотеки классов Windows 8 для решения
  • Добавить PortableClassLibrary1 переносимую библиотеку классов, ориентированную на Windows 8 и Windows Phone 7.5, на решение
  • Ссылка HttpClient пакет nuget в ClassLibrary1
  • Ссылка HttpClient пакет nuget в PortableClassLibrary1
  • Ссылка как ClassLibrary1, так и PortableClassLibrary1
  • Компилировать решение

Вы получаете ошибку на этапе пакета .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 one) упакована в .appx, а переносимая версия игнорируется

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

Ответ 1

В дополнение к этому вы должны получать предупреждения, похожие на:

Все проекты, ссылающиеся на ClassLibrary1.csproj, должны установить nuget пакет Microsoft.Bcl.Build. Для получения дополнительной информации см. http://go.microsoft.com/fwlink/?LinkID=317569.

Это указывает на проблему. В основном, если не считать этого, вы должны установить HttpClient.Compression во все проекты. Упаковка MSBuild/AppX не знает, какую бинарную версию нужно развернуть между проектом переносимой библиотеки и библиотеки хранилища (у них разные API и версии). Установка пакета в приложение, сообщает ему.

Ответ 3

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

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