未将WebForms和Azure管道包添加到项目中



我在从msbuild获取包以显示在build.artifactStagingDirectory中时遇到问题。我的.yml文件非常基本。几乎默认。

我不得不向NuGetCommand@2任务添加一些属性,因为它找不到要安装的软件包。

无论我做什么,我似乎都拿不到包文件。我很好奇它是否与构建任务有关。我看到警告说,它无法从NuGet Restore中找到包,但我没想到它不会构建zip文件等等。当使用所有相同的开关在本地运行msbuild时,它会按预期创建包文件。

以下是yml文件的重要部分。

- task: NuGetCommand@2
inputs:
restoreSolution: 'src/WebFormsProj/packages.config'
restoreDirectory: 'src/packages'
- 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: PublishBuildArtifacts@1

我收到以下警告(每个包裹一个(:

Warning MSB3030: Could not copy the file "D:a1ssrcpackagesAjaxControlToolkit.4.1.60919lib40AjaxControlToolkit.dll" because it was not found.

Could not copy the file "D:DownloadsaspnetspellASPNetSpellASPNetSpell.dll" because it was not found.

我还有其他的网络应用程序可以完美地构建和创建包。不同的是,这是一个网络表单项目,而不是一个网络应用程序。任何想法都将不胜感激。

更新:

我的项目位于src目录中。我注意到这些软件包安装在src/WebFormsProj/src/packages/目录中,而不是src/packages目录中。此后,我将restoreDirectory目录更改为'$(Pipeline.Workspace)/src/packages'目录。我仍然得到";未找到";尽管存在错误。

更新2:我再次发现软件包没有安装在它试图从中提取的目录中。所以我又改了一次。这一次取得了一些成功。我再次将还原目录更改为:$(build.sourceDirectory)srcpackages'

我还必须更新一个DLL,它指向下载目录,而不是源代码管理中项目的本地目录。

我仍然没有看到发布包正在创建,但我现在更接近了。

更新3

我终于能够将这些文件作为一个工件来获取了。我不得不将/p:OutDir="$(build.artifactStagingDirectory)"添加到msBuildArgs中,然后用PathtoPublish: $(build.artifactStagingDirectory)_PublishedWebsites更新我的发布工件任务

下一步是应用转换。我仍然不明白为什么我没有从web应用程序中获得典型的zip文件。

您可以尝试将VSbuild任务的restoreNugetPackages属性设置为true。例如:

- 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)'
restoreNugetPackages: true

最新更新