如何以.NET中发布Web应用程序的方式发布Windows应用程序?

时间:2018-12-04 06:03:45

标签: .net web-applications msbuild

通过发布,我的意思是使用Windows应用程序的所有代码生成目录,类似于在使用给定目录构建代码的情况下,将Web应用程序发布在$(OutDir)\_PublishedWebsites下的专用目录中。 OutDir传递到内部版本)。

现在,我基本上已经从Microsoft.WebApplication.targets中“窃取”了发布代码,并将其放置在Windows应用程序项目导入的我们自己的目标文件中。这样,我们就在_PublishedApplications和_UnitTests特殊目录下发布了一些Windows应用程序和单元测试。

我想知道其他人如何解决相同的问题-您使用共享的bin目录(使用OutDir build参数)构建代码,并希望发布非Web应用程序的内容。

编辑1

请允许我澄清。在构建服务器上,将解决方案构建到共享bin目录中。这是因为CI构建将OutDir构建属性设置为某个值。由于此值在解决方案中的所有项目之间共享,因此所有项目都将其生成产品放置在此目录中。对于Web应用程序X,这意味着它下面不再有bin文件夹。对于库/ exe项目,这意味着它下面不再有bin \ Debug(或bin \ Release)。所有的钱都转移到了这个共享箱里。

但是,Web应用程序会受到特殊对待。一旦将其生成产品放入此共享容器中,msbuild就会从Microsoft.WebApplication.targets调用目标,该目标将执行以下操作:

  1. 在共享bin目录下创建文件夹_PublishedWebsites\X
  2. 将Web应用程序所需的所有二进制文件复制到_PublishedWebsites\X\bin
  3. 将Web应用程序所需的所有内容文件复制到_PublishedWebsites\X
  4. 根据需要将任何其他文件复制到_PublishedWebsites\X_PublishedWebsites\X\bin

这就是我所说的发布。它并不是真正发布到Web服务器上,它更像是用于打包的打包程序。

对于非Web应用程序,我也需要相同的内容。我是通过创建自己的目标文件并本质上复制Microsoft.WebApplication.targets的逻辑来实现的,但我不是唯一需要它的人,其他人也都一样。必须是更好的方法。

1 个答案:

答案 0 :(得分:0)

使用dotnet很简单-使用publish命令。

这与dotnet build的命令行完全相同,只是将build替换为publish