繁体   English   中英

Azure DevOps构建管道:从MsBuild.exe解决方案创建NuGet程序包

[英]Azure DevOps Build Pipeline: Create NuGet Package from MsBuild.exe Solution

我正在尝试构建Asp.Net框架461 Web应用程序并将dll打包在NuGet包中,该包将用于在章鱼中进行部署。

请注意,我正在使用:

  • 内置在ADO中的解决方案任务
  • 八达通提供的内置Create Octopus Package任务以打包NuGet pkg

在此处输入图片说明

它构建了解决方案,并将工件与xxx.deploy批处理文件打包为部署包格式。 但是,当我尝试部署到服务器上时,这迫使我在不需要的服务器上安装“ Web Deploy(msdeploy.exe)”。

NuGet软件包的内容如下:构建的内容嵌入zip文件和其他部署文件中。

在此处输入图片说明

我们以前的DevOps以前管理过这些构建,当我将他的NuGet软件包与我的NuGet软件包进行比较时,它们是完全不同的。 在他的版本中,所有aspx,ascx和bin文件夹都位于NuGet软件包的顶层。

在此处输入图片说明

我想打包我的NuGet软件包,而不包含这些其他部署文件。

我的AzureDevOps中的当前构建参数是

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"

我试图将其更改为/p:WebPublishMethod=FileSystem /p:PackageAsSingleFile=false但我仍然无法实现所需的NuGet包格式。

它将生成的输出生成到-> $ myproject \\ obj \\ Release \\ Package \\ PackageTmp位置。

我想知道是否有一种无需额外的zip文件即可生成NuGet包的方法? 还是我需要编写手动的powershell脚本并执行Octo.exe来将内容打包在... \\ PackageTmp目录下?

无论如何,是否有“创建Nuget打包”任务来定义我只想打包..\\PackageTmp目录?

Azure DevOps构建管道:从MsBuild.exe解决方案创建NuGet程序包

的确,如果您只想打包..\\PackageTmp文件夹中的文件,则在使用/p:WebPublishMethod=Package时,我们必须为创建八达通包任务的源文件过滤文件,因为没有Create Octopus Package task过滤选项。

您可以将复制任务目录 **\\PackageTmp\\**以过滤PackageTmp文件夹中的文件:

在此处输入图片说明

此外,如果您不关心publish方法,则使用/p:WebPublishMethod=FileSystem /p:PackageAsSingleFile=false应该更容易解决此问题。

当我使用以下参数发布Web应用程序时:

/p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactstagingdirectory)\\" /p:DeployDefaultTarget=WebPublish

然后使用八达通打包应用程序打包它:

在此处输入图片说明

最后,我可以在PackageTmp文件夹中获得包含所有文件的软件包:

在此处输入图片说明

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM