如何发布 .NET "Release" 神器?
How to publish .NET "Release" artifact?
我需要在 MSBuild“Release”的发布任务中为根 file/folder 指定什么?
.NET 版本基本上是二进制文件吗?因为对于 AngularOutput 构建,我必须指定 AngularOutput 的路径,但是对于 .NET 版本,我不确定那是什么路径,我认为它是整个项目,这意味着......它的二进制文件?
预期的工件:
更新:
根据 Kevin 的 YAML 生成的工件:
inside _PublishedWebsites
更新 3 之后,当 运行 在 windows 代理上时:
更新#4:使用 VSBuild
steps:
- task: VSBuild@1
displayName: '.Net build | Build solution'
inputs:
solution: 'Project123/*.csproj'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: AnyCPU
configuration: Release
msbuildArchitecture: x64
结果一样,放在长路径:
update#5:改用 /p:PublishProfile=Project123.pubxml
MSBuild arg,并在 [=88= 上使用 运行 ] 代理,构建完成得很好,但这次我收到发布任务的警告:
##[warning]Directory 'D:\a\a' is empty. Nothing will be added to build artifact 'Release'.
我尝试将 /p:OutputPath=$(build.artifactstagingdirectory)
添加到发布配置文件 arg 旁边的 MSBuild args,结果与我之前发布的相同:
备注:
实际上我们甚至需要 /p:DeployOnBuild=true
?我知道那是部署,但我认为我们不希望或不应该在管道中进行部署,因为我们有一个版本专门用于将已发布的工件部署到应用程序服务。
What do i need to specify for the root file/folder in publish task for MSBuild "Release"?
当您使用 Msbuild 任务构建项目时,输出文件默认保存在 Bin 文件夹。例如:$(build.sourcesdirectory)/Projectname/bin
.
根据您项目的结构,具体路径可能不同。
我建议您可以在 Msbuild 任务中添加 msbuild 参数(例如 /p:OutputPath=$(build.artifactstagingdirectory)
)。
例如:
在这种情况下,您可以将特定路径设置为输出路径。这将使您更容易存档和发布工件。
更新:
Ubuntu代理人:
如果我不设置 msbuild arg,输出文件将显示在 bin 文件夹中:
当我添加 msbuild arg 时,它会将文件上传到目标路径:
它们具有相同的工件内容。
更新2:
您可以尝试以下示例来为 Azure APP 服务创建包。
经典:
Yaml:
steps:
- task: NuGetToolInstaller@0
displayName: 'Use NuGet 4.4.1'
inputs:
versionSpec: 4.4.1
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
restoreSolution: Sample.sln
- task: MSBuild@1
displayName: 'Build solution Sample.sln'
inputs:
solution: Sample.sln
platform: '$(BuildPlatform)'
configuration: Release
msbuildArguments: '/p:OutputPath=$(build.artifactstagingdirectory)'
- task: ArchiveFiles@2
displayName: 'Archive $(Build.ArtifactStagingDirectory)'
inputs:
rootFolderOrFile: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact'
inputs:
PathtoPublish: '$(build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
condition: succeededOrFailed()
结果:
更新3:
steps:
- task: NuGetToolInstaller@0
displayName: 'Use NuGet 4.4.1'
inputs:
versionSpec: 4.4.1
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
restoreSolution: Sample.sln
- task: MSBuild@1
displayName: 'Build solution Sample.Web/Sample.Web.csproj'
inputs:
solution: Sample.Web/Sample.Web.csproj
platform: '$(BuildPlatform)'
configuration: Release
msbuildArguments: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
我需要在 MSBuild“Release”的发布任务中为根 file/folder 指定什么?
.NET 版本基本上是二进制文件吗?因为对于 AngularOutput 构建,我必须指定 AngularOutput 的路径,但是对于 .NET 版本,我不确定那是什么路径,我认为它是整个项目,这意味着......它的二进制文件?
预期的工件:
更新: 根据 Kevin 的 YAML 生成的工件:
inside _PublishedWebsites
更新 3 之后,当 运行 在 windows 代理上时:
更新#4:使用 VSBuild
steps:
- task: VSBuild@1
displayName: '.Net build | Build solution'
inputs:
solution: 'Project123/*.csproj'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: AnyCPU
configuration: Release
msbuildArchitecture: x64
结果一样,放在长路径:
update#5:改用 /p:PublishProfile=Project123.pubxml
MSBuild arg,并在 [=88= 上使用 运行 ] 代理,构建完成得很好,但这次我收到发布任务的警告:
##[warning]Directory 'D:\a\a' is empty. Nothing will be added to build artifact 'Release'.
我尝试将 /p:OutputPath=$(build.artifactstagingdirectory)
添加到发布配置文件 arg 旁边的 MSBuild args,结果与我之前发布的相同:
备注:
实际上我们甚至需要 /p:DeployOnBuild=true
?我知道那是部署,但我认为我们不希望或不应该在管道中进行部署,因为我们有一个版本专门用于将已发布的工件部署到应用程序服务。
What do i need to specify for the root file/folder in publish task for MSBuild "Release"?
当您使用 Msbuild 任务构建项目时,输出文件默认保存在 Bin 文件夹。例如:$(build.sourcesdirectory)/Projectname/bin
.
根据您项目的结构,具体路径可能不同。
我建议您可以在 Msbuild 任务中添加 msbuild 参数(例如 /p:OutputPath=$(build.artifactstagingdirectory)
)。
例如:
在这种情况下,您可以将特定路径设置为输出路径。这将使您更容易存档和发布工件。
更新:
Ubuntu代理人:
如果我不设置 msbuild arg,输出文件将显示在 bin 文件夹中:
当我添加 msbuild arg 时,它会将文件上传到目标路径:
它们具有相同的工件内容。
更新2:
您可以尝试以下示例来为 Azure APP 服务创建包。
经典:
Yaml:
steps:
- task: NuGetToolInstaller@0
displayName: 'Use NuGet 4.4.1'
inputs:
versionSpec: 4.4.1
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
restoreSolution: Sample.sln
- task: MSBuild@1
displayName: 'Build solution Sample.sln'
inputs:
solution: Sample.sln
platform: '$(BuildPlatform)'
configuration: Release
msbuildArguments: '/p:OutputPath=$(build.artifactstagingdirectory)'
- task: ArchiveFiles@2
displayName: 'Archive $(Build.ArtifactStagingDirectory)'
inputs:
rootFolderOrFile: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact'
inputs:
PathtoPublish: '$(build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
condition: succeededOrFailed()
结果:
更新3:
steps:
- task: NuGetToolInstaller@0
displayName: 'Use NuGet 4.4.1'
inputs:
versionSpec: 4.4.1
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
restoreSolution: Sample.sln
- task: MSBuild@1
displayName: 'Build solution Sample.Web/Sample.Web.csproj'
inputs:
solution: Sample.Web/Sample.Web.csproj
platform: '$(BuildPlatform)'
configuration: Release
msbuildArguments: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'