我正在尝试构建Asp.Net框架461 Web应用程序并将dll打包在NuGet包中,该包将用于在章鱼中进行部署。
请注意,我正在使用:
它构建了解决方案,并将工件以部署包格式与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
目录?
答案 0 :(得分:0)
Azure DevOps构建管道:从MsBuild.exe解决方案创建NuGet包
实际上,如果您只想打包..\PackageTmp
文件夹中的文件,则在使用/p:WebPublishMethod=Package
时,我们必须为创建八达通打包任务的源文件过滤文件,因为Create Octopus Package task
没有过滤器选项。
您可以将copy 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
文件夹中获得包含所有文件的软件包:
希望这会有所帮助。