MSBuild 如何在不生成 zip 文件的情况下为 .NET Core 应用创建 Web 部署包



所以我要做的是用MSBuild构建一个.NET Core应用程序,并让它创建Web部署文件夹,但不会自动将其放入zip文件中。我可以通过使用/p:WebPublishMethod=Package/p:PackageAsSingleFile=false为 .NET Framework 应用程序执行此操作,它创建相同的文件夹结构,但不将其添加到 zip 文件中。但是,对于 .NET Core 应用程序,它似乎忽略了此标志并始终压缩最终包。

我不希望它压缩的原因是我需要在部署它之前向构建添加许多"自定义"文件。我无法在构建过程中添加文件,因为我们有许多不同的客户端,并且它们都共享相同的"基础"软件,然后需要添加客户端特定的文件。因此,我想构建"基本"软件,然后能够复制输出文件夹,添加客户端特定的文件,然后将该构建压缩以部署到 IIS。这节省了大量时间,因为替代方案是为每个客户端进行新的构建,即使 95% 的软件是相同的。

那么,是否有其他方法可以使用 .NET Core 应用程序实现此目的?

我一直在通过命令行使用 MSBuild 进行测试。该解决方案混合了.NET Framework和.NET Core asp.net 网站。这是我正在运行的:

msbuild.exe "Solution.sln" /nologo /nr:false /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=false /p:SkipInvalidConfigurations=true /p:PreBuildEvent="" /p:PostBuildEvent=""  /p:BasePackageLocation="C:TempBuildOutput" /p:platform="any cpu" /p:configuration="release"

这适用于.NET Framework网站,但.NET Core网站继续压缩。

请注意,BasePackageLocation是一个自定义属性,它将 PackageLocation 设置为 "$(BasePackageLocation(\$(MSBuildProjectName(\",以便每个网站都放在自己的子目录中

那么,是否有另一种方法可以使用 .NET Core 应用程序来实现此目的?

抱歉,答案可能是否定的。这是关于发布.net core项目的一个问题,已报告给产品团队,在修复之前可能还有很长的路要走。

对于.net core中的web deploy package模式,您将在.zip所在的同一文件夹中获得WebApplication.deploy.cmdxx.cmd中的许多命令都与xx.zip相关联,因此不建议手动执行某些操作来unzip它。

我建议我们可以在那里跟踪问题(DC(,如果有任何更新或修复:),我会更新答案

最新更新