我在Visual Studio 2013中有一个C#大项目,它由以下形成:
您可以猜到最终文件是:
我使用从PowerShell调用的msbuild.exe构建它。
$msbuild="C:\windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe"
$option0 = 'FOO.sln /t:Clean,Rebuild /p:Configuration=Debug /p:Outdir=$outputdir'
iex "$msbuild $option0" | tee C:\TFS\Oscar\Build\oscar.txt
项目构建并在输出文件夹中有一个名为 _PublishedWebsites 的好目录,其中包含三个网站,每个目录中有一个。从这里开始,使用PowerShell部署到服务器并不复杂。
在outputdir中,我有 FooDB.dacpac ,因此我可以轻松地使用 sqlpackage 将其部署到SQL Server。
我的问题适用于Windows服务。它们不在文件夹中,而是在输出文件夹中,与所有DLL,sqlproj文件,测试文件混合。
有没有办法将它们放在类似于" _PublishedWebsites"
的文件夹中我可以将所有文件复制到部署的每个Windows服务文件夹中并且可以正常工作......但感觉不对...
答案 0 :(得分:1)
YES!实际上,您可以使用MSDeploy作为WebDeploy的基础技术,为Windows服务或计划任务创建类似的部署包。
基本步骤是
https://dotnetcatch.com/2016/03/18/deploy-non-web-apps-with-msdeploy/
答案 1 :(得分:1)
我们在Windows服务项目中使用了nuget包PublishedApplications(实际上只是使用TopShelf的控制台应用程序)。
因此,我们在输出文件夹{OutDir}/_PublishedApplications/{appName}
({OutDir}/PublishedWebSites
旁边)中为这些服务获得了一个包装精美的应用程序。
我仍然在寻找一种方法来获得*.sqlproj
项目的类似行为......