gpt4 book ai didi

c# - 如何在 Azure Pipeline 中模拟 Visual Studio Publish

转载 作者:行者123 更新时间:2023-12-05 05:08:01 24 4
gpt4 key购买 nike

我正在尝试了解如何将我的 WPF 应用程序发布到多个位置。

原因:没有所有用户都可以访问的目录/网络位置。连接到 Azure 管道的本地托管代理可以访问位置(所需的发布位置),这将允许所有用户至少有一个位置来访问应用程序。

一段时间后,我终于能够发布到这些位置。现在我想转换我的发布操作来模拟 Visual Studio 的功能。

我的意思是我希望发布文件夹看起来像这样:

1. A folder called "Application Files" 
Containing subfolders
MyApplicationName_1_0_0_19
MyApplicationName_1_0_0_20
...
2. `MyApplicationName.application`
3. `Setup.exe` <- Note: I delete this file since it requires admin privileges to use. I've only included it here because Visual Studios Publish feature creates it on the first publish.

而不是它当前的样子,这是我当前发布的所有应用程序文件。

原因:运行 MyApplicationName.application 会在用户桌面上创建一个快捷方式,当应用程序启动时,它会检查更新的版本。

最后一个任务是它发布到所需位置的地方。

# ASP.NET Core (.NET Framework)
# Build and test ASP.NET Core projects targeting the full .NET Framework.
# Add steps that publish symbols, save build artifacts, and more:
# https://learn.microsoft.com/azure/devops/pipelines/languages/dotnet-core

trigger:
- master

pool: Default

variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'

- task: MSBuild@1
inputs:
solution: 'Tenant Tool Analytics Module/*.csproj'
msbuildArchitecture: 'x64'


- task: VisualStudioTestPlatformInstaller@1
inputs:
packageFeedSelector: 'nugetOrg'
versionSelector: 'latestStable'


- task: VSTest@2
inputs:
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\*test*.dll
!**\*TestAdapter.dll
!**\obj\**
searchFolder: '$(System.DefaultWorkingDirectory)'
vsTestVersion: 'toolsInstaller'

- task: MSBuild@1
inputs:
solution: 'Tenant Tool Analytics Module/*.csproj'
msbuildArguments: '/target:Publish /p:OutDir=c:\test2\'
msbuildArchitecture: x64

注意:我没有使用 Azure 部署组,因为这需要管理员权限,而获得这些权限是一个漫长而缓慢的过程(目前正在进行中,无法保证)。如果最好的解决方案是通过那里,请发表评论,当我有权为部署组运行“注册脚本 (PowerShell)”时,我会发布一个新问题。

我没有创建文件“MyApplicationName.application”,而是由 Visual Studios 发布功能创建的。我在下面添加了在其中找到的代码。

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xrml="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
<assemblyIdentity name="MyApplicationName.application" version="1.0.0.20" publicKeyToken="0000000000000000" language="neutral" processorArchitecture="amd64" xmlns="urn:schemas-microsoft-com:asm.v1" />
<description asmv2:publisher="MyApplicationName" asmv2:product="MyApplicationName" xmlns="urn:schemas-microsoft-com:asm.v1" />
<deployment install="true" co.v1:createDesktopShortcut="true">
<subscription>
<update>
<beforeApplicationStartup />
</update>
</subscription>
<deploymentProvider codebase="file://[Publish Path On Shared Network Drive]" />
</deployment>
<compatibleFrameworks xmlns="urn:schemas-microsoft-com:clickonce.v2">
<framework targetVersion="4.7.2" profile="Full" supportedRuntime="4.0.30319" />
</compatibleFrameworks>
<dependency>
<dependentAssembly dependencyType="install" codebase="Application Files\MyApplicationName_1_0_0_20\MyApplicationName.exe.manifest" size="7240">
<assemblyIdentity name="MyApplicationName.exe" version="1.0.0.20" publicKeyToken="0000000000000000" language="neutral" processorArchitecture="amd64" type="win32" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>6P...gi+j6...nY=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
</asmv1:assembly>

最佳答案

由于 WPF 框架是 .NET 的一部分,您可以在构建管道中选择 .NET DeskTop 模板并使用 Publish Artifact 任务来部署 .Net 桌面应用程序构建工件到共享网络驱动器文件夹。

enter image description here

Artifact publish location设置为A file share,然后您需要输入您的网络驱动器文件夹路径。

enter image description here

如果要部署到多个网络驱动器,可以添加多个Publish Artifact 任务。可以引用这个case有类似的问题。

如果你想部署到大量的位置,又不想添加多个任务,更好的方法是使用部署组。

关于c# - 如何在 Azure Pipeline 中模拟 Visual Studio Publish,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58614804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com