10
  1. 创建新的 Windows 8 应用程序App1
  2. ClassLibrary1Windows 8 类库项目添加到解决方案
  3. PortableClassLibrary1将面向 Windows 8 和 Windows Phone 7.5 的可移植类库添加到解决方案
  4. 参考HttpClientnuget 包ClassLibrary1
  5. 参考HttpClientnuget 包PortableClassLibrary1
  6. 参考ClassLibrary1PortableClassLibrary1
  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

请注意,如果您引用任何具有 win8 和便携式程序集混合的 nuget 包,则会重现相同的错误。

预期内容:大多数特定版本的库(win8 版本)被打包到 .appx 中,而可移植版本被忽略

关于如何欺骗 appx 打包程序并构建此类 Windows 8 项目的任何想法?

4

3 回答 3

9

看起来这里描述的解决方案有效:http ://cyanbyfuchsia.wordpress.com/2013/05/03/payload-contains-two-or-more-files-with-the-same-destination-path/

基本上,您必须在从主应用程序引用的 WinRT 项目中将“复制本地”设置为 false。

于 2013-08-22T11:35:31.693 回答
2

除此之外,您应该收到类似于以下内容的警告:

所有引用 ClassLibrary1.csproj 的项目都必须安装 nuget 包 Microsoft.Bcl.Build。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=317569

这表明有问题。基本上,简而言之,您应该将 HttpClient.Compression 安装到所有项目中。MSBuild/AppX 打包不知道在可移植库和存储库项目之间部署哪个二进制文件(它们具有不同的 API 和版本)。将包安装到应用程序中,告诉它。

于 2013-08-22T15:49:27.997 回答
0

我也有这样的问题。这是因为我在项目之间共享了我的一个解决方案。我不得不重命名解决方案,因为名称与其中一个项目相同。重命名后我遇到了这个问题。

我通过以下方式修复它:右键单击我重命名并使用两个项目的解决方案,然后使用属性,然后在程序集名称中使用相同的名称,如解决方案名称。

于 2013-12-29T18:15:16.997 回答