通过发布,我的意思是使用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
调用目标,该目标将执行以下操作:
_PublishedWebsites\X
_PublishedWebsites\X\bin
_PublishedWebsites\X
_PublishedWebsites\X
或_PublishedWebsites\X\bin
这就是我所说的发布。它并不是真正发布到Web服务器上,它更像是用于打包的打包程序。
对于非Web应用程序,我也需要相同的内容。我是通过创建自己的目标文件并本质上复制Microsoft.WebApplication.targets
的逻辑来实现的,但我不是唯一需要它的人,其他人也都一样。必须是更好的方法。
答案 0 :(得分:0)
使用dotnet很简单-使用publish命令。
这与dotnet build
的命令行完全相同,只是将build
替换为publish
。