Azure devops “如何发布.NET”;“释放”;人工制品?
我需要为MSBuild“Release”的发布任务中的根文件/文件夹指定什么 NET版本基本上是二进制文件吗?因为对于AngularOutput构建,我必须指定AngularOutput的路径,但是对于.NET发行版,我不确定这将是什么路径,我认为这是整个项目,也就是说…是二进制文件 预期工件: 更新: 凯文的YAML之后产生的人工制品:Azure devops “如何发布.NET”;“释放”;人工制品?,azure-devops,azure-pipelines-build-task,azure-devops-pipelines,Azure Devops,Azure Pipelines Build Task,Azure Devops Pipelines,我需要为MSBuild“Release”的发布任务中的根文件/文件夹指定什么 NET版本基本上是二进制文件吗?因为对于AngularOutput构建,我必须指定AngularOutput的路径,但是对于.NET发行版,我不确定这将是什么路径,我认为这是整个项目,也就是说…是二进制文件 预期工件: 更新: 凯文的YAML之后产生的人工制品: steps: - task: NuGetToolInstaller@0 displayName: 'Use NuGet 4.4.1' input
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)'
内部发布的Web站点
在windows代理上运行更新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)'
更新#4:使用VSBuild
结果相同,放置在长路径中:
更新#5:改用/p:PublishProfile=Project123.pubxml
MSBuild arg,并在windows代理上运行,生成完成得很好,但这次我收到发布任务的以下警告:
##[警告]目录“D:\a\1\a”为空。不会向构建工件“发布”添加任何内容
我尝试将/p:OutputPath=$(build.artifactstagingdirectory)
添加到MSBuild参数和发布配置文件参数,结果与我之前发布的结果相同:
备注:
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)'
实际上,我们甚至需要/p:DeployOnBuild=true
?我理解这是为了部署,但我认为我们不想也不应该在管道中部署,因为我们有一个专门用于将发布的工件部署到应用程序服务的版本
我需要为MSBuild“Release”的发布任务中的根文件/文件夹指定什么
使用Msbuild任务生成项目时,默认情况下,输出文件将保存在Bin文件夹中。例如:$(build.sourcesdirectory)/Projectname/bin
根据项目的结构,具体路径可能会有所不同
我建议您可以在msbuild任务中添加msbuild参数(例如,/p:OutputPath=$(build.artifactstagingdirectory)
)
例如:
在这种情况下,可以将特定路径设置为输出路径。这将使您更容易归档和发布工件
更新:
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)'
Ubuntu代理:
如果未设置msbuild参数,则输出文件将显示在bin文件夹中:
添加msbuild参数时,它会将文件上载到目标路径:
它们的内容相同
更新2:
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)'
您可以尝试以下示例为Azure应用程序服务创建包
经典:
亚马尔:
结果:
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)'
更新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)'
我明白了,但是在Ubuntu代理上运行MSBuild参数是否有效?我今天用一个buncha选项运行它,包括MSDeploy和Setting包,但我觉得它没有任何效果……嗨@Cataster。对于参数:
/p:OutputPath=$(build.artifactstagingdirectory)
,根据我的测试,构建参数可以将输出文件传递到正确的路径。它可以在Ubuntu代理上正常工作。我在其中一张图片中意识到这是一个netcore应用程序。对于.NET Framework应用程序,这是否也适用?(不是.NET Core)@Cataster获得它将测试并检查它,谢谢。要在存档任务中创建存档文件
,您的值是多少?它是否与发布任务中的PathTopPublish相同。根据我的测试,输出内容与msbuild参数相关。请参考我的更新3,并检查它是否可以使一些changes@KevinLu-MSFT我用update3 yaml更新了管道,因此我禁用了存档,按照建议添加了MSBuild参数,并修改了pathToPublish$(build.artifactStaginDirectory)/$(build.BuildId).zip
->$(build.artifactStaginDirectory)
。然而,这一次没有产生任何人工制品。收到以下警告:#[warning]目录“/home/vsts/work/1/a”为空。构建工件“Release”时不会添加任何内容。
@KevinLu MSFT我在windows agent上测试了它,看起来它确实产生了一些与linux agent不同的东西。但是,路径很长。内容不完全在根上。这可能就是为什么在linux代理中,根据我上面的评论,它找不到我认为的任何东西。因此,即使在windows上,它也与预期的工件不完全匹配。请尝试使用VS Build任务在Microsoft Hosted agent上运行相同的参数?另一方面,根据我们前面的讨论,您可以将/p:DeployOnBuild=true/p:PublishProfile=xxxx
添加到构建参数以使用发布配置文件。请检查一下它是否能做些什么changes@KevinLu-MSFT请查看我的更新4和5