使用MakeAppx的Windows 10 UWP App构建问题

问题描述 投票:2回答:3

我不确定是什么导致了这个错误,我已经研究了几个小时了。我正在使用Visual Studio 2015 Update 3.我正在构建一个将上传到商店的Windows 10 Universal(UWP)应用程序。我已经拥有了我的开发中心帐户,它与我的应用程序相关联。最后,当我右键单击项目并选择store> create app packages时,我收到此错误:

错误80080204:文件名为“PacTracMobile.Windows10_1.3.0.0_ARM.appx”且程序包全名“OdenIndustriesInc.9510B3DEAC6_1.3.0.0_arm__bdbevzbp0ydz4”的程序包在捆绑中无效,因为该程序包还包含文件名为“PacTracMobile”的程序包.Windows10_1.3.0.0_x86.appx“和包全名”OdenIndustriesInc.9510B3DEAC6_1.3.0.0_arm__bdbevzbp0ydz4“,适用于相同的处理器体系结构。捆绑包不能包含同一处理器体系结构的多个应用程序包,也不能包含任何体系结构特定的应用程序包的体系结构中立的应用程序包。

此错误与文件MakeAppx的记录有关。我正在尝试构建x86,x64和ARM。当我在调试时,我可以很好地构建,部署和测试,没有错误。但是,当我选择构建我的应用程序包时,我得到了这个。

注意,Visual Studio处于发布模式,任何CPU。也就是说,当我选择创建应用程序包时,在第一个弹出窗口中,我已经选择在发布中构建每个三个平台。我的屏幕看起来像这样:

Exactly how my build looks, except with my package output path

当我点击创建时,它开始构建,最终,我得到上面的错误。

有什么想法吗?

谢谢!!!

编辑 - 为了记录,我在上面显示的屏幕截图,我从微软的这些说明中获得。我已经并且正在完全遵循这些说明! MSDN Building UWP apps

更新 - 如果,在上面的屏幕截图中的窗口中,我取消选择x84和x64(这是不理想的,因为我想要所有三个)并且只做ARM,我没有得到任何错误和包完成。基于一些阅读,我怀疑,如果我一个接一个地做(即,只选择x86再次运行),它将构建正常,但我将留下三个应用程序包而不是一体化。所以,这似乎与尝试同时构建所有三个并且打包成一个捆绑包有关,这就是错误正在解决的问题,但同样,错误或我在网上阅读的任何内容都解释了如何解决问题。

.net visual-studio-2015 windows-store-apps uwp windows-10-universal
3个回答
3
投票

经过对此问题的大量故障排除后,我不得不让MS支持人员解决这个问题。问题的根本原因在于,之前的架构之一正在构建后者,因此在构建后者时,它失败了,因为它已经由前者构建。

换句话说,您将在上面的屏幕截图中看到我已选中框以构建所有三个(x86,x64和ARM)。我们发现x86实际上是在构建ARM。因此,当ARM进行构建时,它会抛出错误,因为已经构建了包。

现在,对于解决方案,MS支持帮助识别VS的错误以及它如何处理.csproj文件。在我的案例中,我们确认了在新项目中再现的MS支持,.csproj文件可能与Configuration Manager下的UI中显示的内容不同步。换句话说,我在VS中的配置管理器显示x86实际上是针对x86 ......或者应该有。但是,当我们在记事本中打开.csproj文件时,我们发现x86实际上已设置为ARM。

我们还注意到重新启动VS不会将它们同步备份,也不会将配置管理器物理地更改为ARM,然后再返回到x86。它几乎就像是不同步,然后不再尝试更新它。

因此,唯一的解决方法是手动更正/编辑我的.csproj文件以显示正确的体系结构。一旦我这样做,一切都很好。

这是您想要在csproj文件中查找的内容

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>

请注意

 <PlatformTarget>x86</PlatformTarget>

匹配配置。在此之前,即使配置项是针对x86,也说ARM


1
投票

冲突可能源于该进程之前创建的包。您可以尝试将版本号增加到1.4.0.0,然后重试。

如果问题仍然存在,您可以创建3个单独的包捆绑包来检查不同的体系结构。只需将所有appxbundle上传到您在Dashboard中提交的包部分即可。

有问题的here已被报道为已修复。


0
投票

生成具有多个体系结构的包时,它们必须具有相同的编译配置。例如,如果Release x64具有“使用.NET Native工具链编译”,则版本x86也必须具有该标志。或者为每个架构生成一个包。

© www.soinside.com 2019 - 2024. All rights reserved.