C#,在teamcity构建后部署windows任务和服务

C#,在teamcity构建后部署windows任务和服务,c#,deployment,windows-services,scheduled-tasks,teamcity,C#,Deployment,Windows Services,Scheduled Tasks,Teamcity,我们有一个由几个项目组成的解决方案。有些项目是windows任务,有些是windows服务,有些是运行在远程服务器上的mvc网站。在这台服务器上,我们目前正在将TeamCity作为CI服务器来实现构建和部署的自动化。到目前为止,这些项目都部署在同一台服务器上。构建、测试步骤等工作正常,但我不确定如何部署任务和服务。所有关于这个主题的教程(至少我看过的那些)都只关注网站的部署 最明显的方法是让生成后步骤运行powershell脚本,该脚本将卸载当前运行的windows服务,删除旧服务,复制新dll

我们有一个由几个项目组成的解决方案。有些项目是windows任务,有些是windows服务,有些是运行在远程服务器上的mvc网站。在这台服务器上,我们目前正在将TeamCity作为CI服务器来实现构建和部署的自动化。到目前为止,这些项目都部署在同一台服务器上。构建、测试步骤等工作正常,但我不确定如何部署任务和服务。所有关于这个主题的教程(至少我看过的那些)都只关注网站的部署

最明显的方法是让生成后步骤运行powershell脚本,该脚本将卸载当前运行的windows服务,删除旧服务,复制新dll,然后再次启动服务。windows任务文件可以直接替换为新版本

但是,我不喜欢这个解决方案,它感觉非常简单,如果部署服务器是远程的,可能很难实现

有人对如何进行部署有更好的建议吗


祝你今天愉快

试着看看章鱼仓库:。您可以轻松将其与TeamCity集成。它具有启动/停止服务等功能。此外,它还使用nuget软件包。

试着看看八达通站点:。您可以轻松将其与TeamCity集成。它具有启动/停止服务等功能。此外,它还使用nuget软件包。

Inedo可以在TeamCity离开时使用。有一个免费版本可能会解决您的需求

当我们使用BuildMaster构建/部署BuildMaster时(在安装程序构建之前),如果您查看BuildMaster的细节,我们必须解决这个问题(Inedo.com>Support>Specifics>BuildMaster,您可以清楚地看到我们如何停止/部署/启动Windows服务。

Inedo可以在TeamCity停止使用的地方使用。有一个免费版本可能会解决您的需求


当我们使用BuildMaster构建/部署BuildMaster时(在安装程序构建之前),如果您查看BuildMaster的细节,我们必须解决这个问题(Inedo.com>Support>Specifics>BuildMaster,您可以准确地看到我们如何停止/部署/启动Windows服务。

您也可以通过Web部署工具部署Windows服务。您所要做的就是使用
runCommand
(un/install and start/stop service)和
dirPath创建
manifest.xml
文件(部署服务)提供程序

我的清单文件也部署了数据库和网站,如下所示:

<sitemanifest>
  <dbDacFx path='$dbSource' />
  <runCommand path='$presync' waitInterval='30000'/>
  <dirPath path='$winSource' />
  <runCommand path='$postsync' waitInterval='30000'/>
  <IisApp path='$webSource' managedRuntimeVersion='v4.0'/>
  <setAcl path='$webSource' setAclResourceType='Directory'/>
  <setAcl path='$webSource' setAclResourceType='Directory' setAclUser='anonymousAuthenticationUser'/>
</sitemanifest>

它是由Psake中的构建脚本生成的,但您可以按照自己的意愿执行

我写了两篇关于这个话题的博客,但都是捷克语的


希望,有些东西可以帮助您。

您也可以通过Web部署工具部署windows服务。您所要做的就是使用
runCommand
(un/install and start/stop service)和
dirPath
(部署服务)提供程序创建
manifest.xml
文件

我的清单文件也部署了数据库和网站,如下所示:

<sitemanifest>
  <dbDacFx path='$dbSource' />
  <runCommand path='$presync' waitInterval='30000'/>
  <dirPath path='$winSource' />
  <runCommand path='$postsync' waitInterval='30000'/>
  <IisApp path='$webSource' managedRuntimeVersion='v4.0'/>
  <setAcl path='$webSource' setAclResourceType='Directory'/>
  <setAcl path='$webSource' setAclResourceType='Directory' setAclUser='anonymousAuthenticationUser'/>
</sitemanifest>

它是由Psake中的构建脚本生成的,但您可以按照自己的意愿执行

我写了两篇关于这个话题的博客,但都是捷克语的


希望,有些东西可以帮助您。

作为后期构建步骤运行msi安装程序以替换旧服务是否可行?在这种情况下,您可能希望检查此答案。希望有帮助。不幸的是,没有,谢谢您的回答。作为后期构建步骤运行msi安装程序以替换旧服务是否可行-构建步骤?在这种情况下,您可能希望检查此答案。希望它有帮助。不幸的是,不,无论如何感谢您的答案。这非常有用。这对小团队是免费的!这非常有用。对小团队也是免费的!