问题背景:
使用Visual Studio开发Windows应用完成后,进行应用打包时需要先将应用与Microsoft Store进行关联,这个步骤可以通过项目右键菜单的发布选项进行,但是有时候在关联窗口会出现“意外的网络错误”或者无法连接开发者账号的情况,报错内容可能如下图,英文错误为:“An unexpected network error has occurred. The app list cannot be refreshed. Please retry by pressing the Refresh button”:
如果此时是因为网络问题或者合作伙伴中心不能访问造成的,就先解决网络问题并确保可以正常访问合作伙伴中心。如果可以正常访问合作伙伴中心,但是应用关联时还是报错,可以尝试以下方法:
1、更新Visual Studio到最新版本
2、在Visual Studio中退出账户并重新登录,并尝试清除VS缓存,使用命令:devenv /resetuserdata
3、使用旁加载方式发布,但这种方式需要配置证书,没有验证过
4、重启电脑、修改网络设置、连接其他网络
此问题自2023年就在微软网站上提出,可以查看以下链接:https://learn.microsoft.com/en-us/answers/questions/1192769/an-unexpected-network-error-has-occurred-the-app-l ,但一直没有得到解决。包括链接里面的方法偶尔可以有效,如果都尝试过后仍然无法解决,可以使用以下方法,此方法经过一个WPF应用(使用Windows应用程序打包项目进行发布)实践验证。
此方法使用的前提条件:
1、合作伙伴中心可以正常访问
2、已经在合作伙伴中心创建了应用,保留了应用名称即可
3、有一个以前已经成功关联过的应用项目
此方法是基于对比关联应用前后项目文件的变化实现的,因为应用发布时只有第一次需要进行应用关联,之后代码更新后直接进行编译打包即可,所以只需将项目文件更新为关联之后的内容即可。
操作步骤如下:
1、增加商店关联配置文件
此文件以“Package.StoreAssociation.xml”命名,可以从以前关联过的项目中进行复制,此文件中“AccountPackageIdentityNames”节点的内容为所有关联的应用的ID,根据复制此文件的项目是否是最近关联的项目来确定列表是否完整(我在此处增加了之前所有已发布的应用,不修改是否可以成功没有进行测试)。
关键修改1:ProductReservedInfo节点为保留的应用的信息,需要修改更新,格式及内容如下:
<ProductReservedInfo>
<MainPackageIdentityName>包ID名称</MainPackageIdentityName>
<ReservedNames>
<ReservedName>保留名称</ReservedName>
</ReservedNames>
</ProductReservedInfo>
其中【包ID名称】可以在合作伙伴中心保留的应用产品标识中查询,保留名称就是创建应用时保留的应用名称。
关键修改2:此文件末尾的节点“PackageInfoList”的appId修改为此应用的Store ID,可以在应用产品标识中查询,格式及内容如下:
<PackageInfoList LandingUrl="https://devcenterapi.dce.mp.microsoft.com/dashboard/Application?appId=XXXXXXXX" />
2、修改项目文件
将第1步的文件添加到项目中,可以使用菜单添加现有项命令添加,或者修改Windows应用程序打包项目的项目文件(后缀为:.wapproj),在其中的“ItemGroup”中增加以下内容:
<None Include="Package.StoreAssociation.xml" />
3、修改包清单配置文件
用文本编辑器打开文件“Package.appxmanifest”,修改开始的“Identity”节点及“Properties”内容,格式及内容如下:
<Identity
Name="包ID名称"
Publisher="PublisherID"
Version="1.0.0.0" />
<Properties>
<DisplayName>显示名称</DisplayName>
<PublisherDisplayName>PublisherDisplayName</PublisherDisplayName>
</Properties>
其中的“包ID名称”、“PublisherID”、“PublisherDisplayName”可以在合作伙伴中心保留的应用产品标识中查询,“显示名称”即为保留的应用名称。
以上内容修改完成后,按正常步骤直接进行【发布】->【创建应用程序包】即可选择使用保留名称分发应用程序,并且不会弹出应用列表选择窗口,之后就可以按正常流程进行打包上传到商店等待审核。