自定义Visual Studio MSIX打包项目输出

7
我正在使用Visual Studio MSIX打包项目在网络共享目录中创建内部应用程序的安装程序。
其中一个问题是它创建了一个带有“_Test”结尾的目录。
为什么会这样做,我该如何消除它?我只想要“MyApp.MSIX_0.0.1.0”,或者更理想的是,“MyApp.0.0.1.0”。
 Directory of I:\

08/14/2020  09:44 AM    <DIR>          .
08/14/2020  09:44 AM    <DIR>          ..
08/14/2020  09:44 AM            21,312 index.html
08/14/2020  09:23 AM               601 MyApp.MSIX.appinstaller
08/14/2020  09:37 AM    <DIR>          MyApp.MSIX_0.0.1.0_Test
               2 File(s)         21,913 bytes
               3 Dir(s)  62,444,621,824 bytes free

我一直在查阅文档,但是却找不到任何关于它创建的目录或生成的index.html文件的内容。我想自定义所有这些内容,添加发布说明等等。

如果这是一个WPF应用程序,那么可能需要注意一下。

3个回答

7

我在这里只是提供了MSFT的原始答案的副本:

包的输出目录在 Microsoft.AppxPackage.Targets 文件中定义,位于C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\v16.0\AppxPackage(根据您的 Visual Studio 版本而定)。

如果您想删除“_Test”后缀,可以修改定义输出目录的行。 在我的文件中,它大约在第3190-3196行:

enter image description here

要修改输出html文件,请修改“Landing”子目录下的 index.template.html 文件 - C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\v16.0\AppxPackage\Landing(根据 VS 版本而定)。


这在开发者机器上可以运行。当从Azure DevOps部署时,我该如何修复它? - Rye bread
1
对于 Visual Studio 2022 Community,路径为 C:\Program Files\Microsoft Visual Studio\2022\Community\Msbuild\Microsoft\VisualStudio\v17.0\AppxPackage - Moshe Gutman
考虑到这是硬编码在系统范围内的文件中,我打算使用脚本在打包后对它们进行重命名。 - Nacht

5
如果您正在使用Azure管道进行部署,您可以在MSBuild任务中添加参数来执行此操作。例如:
硬编码:
task: MSBuild@1
    displayName: MSBuild
    inputs:
      solution: '**/*.sln'
      platform: 'x64'
      configuration: 'Release'
      msbuildArguments: '/p:OutDir=$(Build.BinariesDirectory)/    
/p:AppxPackageTestDir="$(Build.BinariesDirectory)/MyApp.Installer/AppPackages/MyApp_1.0.0/"'

或者使用管道变量:

msbuildArguments: 
 /p:OutDir=$(Build.BinariesDirectory)/
/p:AppxPackageTestDir="$(Build.BinariesDirectory)/MyApp.Installer/AppPackages/$(packageName)_$(newVersion)/"

这将创建一个名为"MyApp_1.0.0"的文件夹,而不是混淆的"MyApp_1.0.0_Test"。
而且,.appinstaller 文件中的 Uri 属性将正确指向此文件夹。

非常有帮助!如果您还想编辑文件本身的名称,可以使用AppxPackageName。例如:dotnet publish <UNRELATED ARGUMENTS...> /p:AppxPackageTestDir="bin/Blah/net6.0-windows10.0.19041.0/win10-x64/AppPackages/MyApp_latest/" /p:AppxPackageName="MyApp_latest"(如果有关系的话,我是在Github Actions中使用dotnet publish运行的,而不是msbuild/Azure Pipelines,就像上面的答案中所提到的那样) - jobrien9

0

对于 2022 Professional 版,文件路径为:C:\Program Files\Microsoft Visual Studio\2022\Professional\Msbuild\Microsoft\VisualStudio\v17.0\AppxPackage\Microsoft.AppxPackage.Targets


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接