在命令行中打包时,msbuild拾取了错误的package.appxmanifest
我有一个VS2017的C#解决方案,包含一个应用程序项目、一个桌面扩展项目和一个打包项目。正如我在中提到的,我最终让msbuild为我创建了一个包含x86和x64的包。但是,在我尝试从该捆绑包安装之后,我发现msbuild实际上选择了错误的package.appxmanifest,因为它们的版本号不同 所以。。。我有两个package.appxmanifest,一个在打包项目中,一个在我的主应用程序项目中。当我在VS2017中从向导构建时,将使用打包项目中的一个,这是正确的。当我使用msbuild仅使用一个平台进行构建时,它也会选择正确的平台,如下所示:在命令行中打包时,msbuild拾取了错误的package.appxmanifest,msbuild,visual-studio-2017,packaging,Msbuild,Visual Studio 2017,Packaging,我有一个VS2017的C#解决方案,包含一个应用程序项目、一个桌面扩展项目和一个打包项目。正如我在中提到的,我最终让msbuild为我创建了一个包含x86和x64的包。但是,在我尝试从该捆绑包安装之后,我发现msbuild实际上选择了错误的package.appxmanifest,因为它们的版本号不同 所以。。。我有两个package.appxmanifest,一个在打包项目中,一个在我的主应用程序项目中。当我在VS2017中从向导构建时,将使用打包项目中的一个,这是正确的。当我使用msbuil
msbuild .\MyApp.sln /p:Configuration=Release /p:Platform=x86
只有当我使用msbuild一起构建两个平台时,它才会使用我的主应用程序项目中的平台:
msbuild .\MyApp.sln /p:Configuration=Release /p:AppxBundlePlatforms="x86|x64" /p:UapAppxPackageBuildMode=StoreUpload
我还尝试构建打包项目而不是解决方案,但是因为我们的桌面扩展项目只有x86,所以在构建x64时,我会在配置方面出错
问题:
始终
或从不
添加到打包项目中Package.appxmanifest
文件。使用.sln
创建应用程序包时,MSBuild/Visual Studio无法清楚地知道应该使用哪个包.appxmanifest
.csproj
,而不是解决方案文件。例如,在生成应用程序项目时,可以使用以下命令行:
msbuild .\MyApp.csproj /p:Configuration=Release /p:AppxBundlePlatforms="x86|x64"
然后构建包装项目:
msbuild .\YouPackaging.csproj /p:Configuration=Release /p:AppxBundlePlatforms="x86"
希望这有帮助。非常感谢。对于问题2,我认为AppxBundlePlatforms仅用于创建捆绑包,这是否也意味着msbuild将选择正确的平台来构建代码?它是如何与参数“Platform”一起工作的?同样,以问题2为例,它是否只是构建用于打包的x86?我的打包项目是一个wapproj,当我尝试时,我得到了关于平台的错误设置为“”,如:“请检查以确保您为此项目指定了配置和平台的有效组合。Configuration='Debug'platform=''。”对于1,我应该有两个appxmanifest吗?我如何让msbuild知道我要在打包项目中使用该版本?很抱歉问了很多问题。我认为我们的项目有一个复杂的设置…@laishiekai,很抱歉由于周末的原因回复得太晚。对于注释中的问题1,是的,MSBuild还选择了基于
AppxBundlePlatforms
构建的正确平台。对于问题2,您似乎没有为此项目为指定的配置和平台提供有效的组合,您应该确保命令行中的参数与您的项目匹配。更新:与MS支持部门讨论后,我们发现msbuild有一个bug,它无法正确使用/p:AppxBundlePlatforms=“x86 | x64”处理多平台捆绑包。目前的解决方法是只构建一个平台,然后将两个捆绑包上传到MS商店。微软正在研究这个问题。