如何使用 Azure DevOps 管道构建 ASP.NET 网站?
How do I use Azure DevOps pipeline to build an ASP.NET web site?
我正在使用旧代码并尝试构建一个 ASP.NET 网站(没有 .csproj 文件)。
我已经为 ASP.NET 创建了一个管道,向我的 .yml 添加了一些任务:
# ASP.NET
# Build and test ASP.NET projects.
# Add steps that publish symbols, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4
trigger:
- master
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: VSTest@2
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Pipeline.Workspace)'
artifact: 'drop'
publishLocation: 'pipeline'
但是,当我 运行 管道时,它在 VSBuild 任务上失败了:
问题似乎出在第 18 行,其中 -p ..\BOMViewer\
指定的目录不存在。
稍后我可能需要遵循 DJ Grossman 的解决方案:
但是现在,我如何指定 -p \BOMViewer
而不是上面的?
*更新
根据@YashGupta 的建议,我在我的 YAML 中将解决方案从 .sln 更改为 .publishproj。但是 VSBuild 不喜欢这种变化:
决赛
我的 .gitignore 忽略了 .publishproj 文件。根据下面@YashGupta 的回答,改变了它并且它像魅力一样工作。
据我了解,对于 ASP.NET 网站,您应该使用 website.publishproj
文件而不是 .sln
文件来构建它。因为网站项目实际上是发布的,而不是构建的(这就是为什么 .publishproj
文件在这种情况下的工作方式类似于 .csproj
文件)。
尝试将 $solution
变量的值修改为 **\*.publishproj
而不是 **\*.sln
。
我正在使用旧代码并尝试构建一个 ASP.NET 网站(没有 .csproj 文件)。
我已经为 ASP.NET 创建了一个管道,向我的 .yml 添加了一些任务:
# ASP.NET
# Build and test ASP.NET projects.
# Add steps that publish symbols, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4
trigger:
- master
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: VSTest@2
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Pipeline.Workspace)'
artifact: 'drop'
publishLocation: 'pipeline'
但是,当我 运行 管道时,它在 VSBuild 任务上失败了:
问题似乎出在第 18 行,其中 -p ..\BOMViewer\
指定的目录不存在。
稍后我可能需要遵循 DJ Grossman 的解决方案:
但是现在,我如何指定 -p \BOMViewer
而不是上面的?
*更新
根据@YashGupta 的建议,我在我的 YAML 中将解决方案从 .sln 更改为 .publishproj。但是 VSBuild 不喜欢这种变化:
决赛
我的 .gitignore 忽略了 .publishproj 文件。根据下面@YashGupta 的回答,改变了它并且它像魅力一样工作。
据我了解,对于 ASP.NET 网站,您应该使用 website.publishproj
文件而不是 .sln
文件来构建它。因为网站项目实际上是发布的,而不是构建的(这就是为什么 .publishproj
文件在这种情况下的工作方式类似于 .csproj
文件)。
尝试将 $solution
变量的值修改为 **\*.publishproj
而不是 **\*.sln
。