Yaml MsBuild在目标位置发布多个文件夹,但不使用输入参数

Yaml MsBuild在目标位置发布多个文件夹,但不使用输入参数,yaml,azure-pipelines,publishing,Yaml,Azure Pipelines,Publishing,我正在将WPS应用程序部署到多个不同的共享网络驱动器。每个应用程序都必须针对不同的数据库。除此之外,由于我使用clickOnce部署,每个位置都需要自己的PublishUrl和InstallUrl 我目前有一个可以部署到每个位置的管道(最终我会将其分解为多个管道) 问题在于,当它发布时,会创建两个文件夹。一个MyAppName和另一个MyAppNameapp.publish它不设置InstallUrl、PublishUrl、UpdateUrl或$(AssemblyVersion)并且(不知道是否

我正在将WPS应用程序部署到多个不同的共享网络驱动器。每个应用程序都必须针对不同的数据库。除此之外,由于我使用clickOnce部署,每个位置都需要自己的PublishUrl和InstallUrl

我目前有一个可以部署到每个位置的管道(最终我会将其分解为多个管道)

问题在于,当它发布时,会创建两个文件夹。一个
MyAppName
和另一个
MyAppNameapp.publish
它不设置
InstallUrl
PublishUrl
UpdateUrl
$(AssemblyVersion)
并且(不知道是否是实际问题)将deploymentProvider代码库设置为本地代理内的文件夹(用于运行此管道)

我试过:

-将OutputPath和OutDir重定向到其他位置,但在
c:\sandbox\deploytesting\siteA
上不会创建任何内容

-删除这两个选项将导致不创建文件夹。如果我只删除一个(或两个),MSBuild不会复制所有文件

完全yaml

# 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://docs.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:ApplicationVersion=$(AssemblyVersion) 
      /p:UpdateEnabled=true /p:UpdateMode=Foreground 
      /p:ProductName=TenantAnalyticsTool 
      /p:InstallUrl=c:\sandbox\deploytesting\siteA
      /p:PublishUrl=c:\sandbox\deploytesting\siteA
      /p:UpdateUrl=c:\sandbox\deploytesting\siteA
      /p:OutputPath=c:\sandbox\deploytesting\siteA
      /p:OutDir=c:\sandbox\deploytesting\siteA '
      msbuildArchitecture: x64
新的MSBuild@1测试

- task: MSBuild@1
  inputs:
      solution: 'Tenant Tool Analytics Module/*.csproj'
      msbuildArguments: '/t:Publish 
      /p:ApplicationVersion=$(Build.BuildId)
      /p:UpdateEnabled=true 
      /p:UpdateMode=Foreground 
      /p:ProductName=TenantAnalyticsTool 
      /p:OutputPath=c:\sandbox\deploytesting\siteC
      /p:InstallUrl=c:\sandbox\deploytesting\siteC
      /p:PublishUrl=c:\sandbox\deploytesting\siteC'
      msbuildArchitecture: x64
结果:文件夹结构保持不变

MyAppName.application的内部

<?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="MyAppName" version="1.0.0.34" publicKeyToken="0000000000000000" language="neutral" processorArchitecture="amd64" xmlns="urn:schemas-microsoft-com:asm.v1" />
  <description asmv2:publisher="CBRE" asmv2:product="Tenant Tool Analytics Module" xmlns="urn:schemas-microsoft-com:asm.v1" />
  <deployment install="true" co.v1:createDesktopShortcut="true">
    <subscription>
      <update>
        <beforeApplicationStartup />
      </update>
    </subscription>
    <deploymentProvider codebase="file://catd...[Not a location specified in the pipe].../MyAppName.application" />
  </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\Tenant Tool Analytics Module_198\Tenant Tool Analytics Module.exe.manifest" size="8606">
      <assemblyIdentity name="Tenant Tool Analytics Module.exe" version="1.0.0.34" 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>R5zudfS3VXtM5dKoEFbHYoZih0Sxr8CjX33H5FgvBk8=</dsig:DigestValue>
      </hash>
    </dependentAssembly>
  </dependency>
</asmv1:assembly>

R5ZUFS3VXTM5DKOEFBHYOZIH0SXR8CJX33H5FGVBK8=

/t:Publish
将发布到属性
/p:OutputPath=siteA
中定义的文件夹。并将创建一个子文件夹“发布”。因此,本例将发布到文件夹
siteA\publish

/p:OutDir
用于
/t:build
。它将包括生成结果中的文件

对于您的情况,我认为您只能使用
/p:OutputPath
,而不能使用
/p:OutDir


对于
$(AssemblyVersion)
未设置。这是因为AssemblyVersion未在管道变量中定义。管道中的语法
$()
将查找管道
变量中定义的变量或管道预定义变量。

最终对我有效的YAML。重复这两个MSBuild任务可以将应用程序发布到网络驱动器

# 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://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core

trigger:
- master

pool: Default

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'
  NewBuildID: $(BuildID)

steps:
- task: NuGetToolInstaller@1

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


- task: MSBuild@1
  inputs:
    solution: 'Tenant Tool Analytics Module/*.csproj'      
    msbuildArguments: ' 
      /p:UpdateEnabled=true 
      /p:UpdateMode=Foreground 
      /p:ProductName="Tenant Analytics Tool"
      /p:BootstrapperEnabled=false
      '
    msbuildArchitecture: 'x64'

- task: MSBuild@1
  inputs:
      solution: 'Tenant Tool Analytics Module/*.csproj'
      msbuildArguments: '/t:Publish 
      /p:UpdateEnabled=true 
      /p:UpdateMode=Foreground 
      /p:ProductName="Tenant Analytics Tool"
      /p:PublishDir=H:\sandbox\deploytesting\SiteA\
      /p:UpdateUrl=\\CATD...[Network Location not network drive]... \sandbox\deploytesting\siteA\
      /p:BootstrapperEnabled=false
      '
      msbuildArchitecture: x64

这个案例有什么更新吗?谢谢你的帮助。我暂时没有考虑这个问题,所以我提前一点来测试你的解决方案。我将用我使用的新BSBuild及其结果更新我的问题。
<?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="MyAppName" version="1.0.0.34" publicKeyToken="0000000000000000" language="neutral" processorArchitecture="amd64" xmlns="urn:schemas-microsoft-com:asm.v1" />
  <description asmv2:publisher="CBRE" asmv2:product="Tenant Tool Analytics Module" xmlns="urn:schemas-microsoft-com:asm.v1" />
  <deployment install="true" co.v1:createDesktopShortcut="true">
    <subscription>
      <update>
        <beforeApplicationStartup />
      </update>
    </subscription>
    <deploymentProvider codebase="file://catd...[Not a location specified in the pipe].../MyAppName.application" />
  </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\Tenant Tool Analytics Module_198\Tenant Tool Analytics Module.exe.manifest" size="8606">
      <assemblyIdentity name="Tenant Tool Analytics Module.exe" version="1.0.0.34" 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>R5zudfS3VXtM5dKoEFbHYoZih0Sxr8CjX33H5FgvBk8=</dsig:DigestValue>
      </hash>
    </dependentAssembly>
  </dependency>
</asmv1:assembly>
# 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://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core

trigger:
- master

pool: Default

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'
  NewBuildID: $(BuildID)

steps:
- task: NuGetToolInstaller@1

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


- task: MSBuild@1
  inputs:
    solution: 'Tenant Tool Analytics Module/*.csproj'      
    msbuildArguments: ' 
      /p:UpdateEnabled=true 
      /p:UpdateMode=Foreground 
      /p:ProductName="Tenant Analytics Tool"
      /p:BootstrapperEnabled=false
      '
    msbuildArchitecture: 'x64'

- task: MSBuild@1
  inputs:
      solution: 'Tenant Tool Analytics Module/*.csproj'
      msbuildArguments: '/t:Publish 
      /p:UpdateEnabled=true 
      /p:UpdateMode=Foreground 
      /p:ProductName="Tenant Analytics Tool"
      /p:PublishDir=H:\sandbox\deploytesting\SiteA\
      /p:UpdateUrl=\\CATD...[Network Location not network drive]... \sandbox\deploytesting\siteA\
      /p:BootstrapperEnabled=false
      '
      msbuildArchitecture: x64