标题不是很好,但我不知道如何总结我想做的事情。
我在C#中有一个Windows .net服务,它在特定位置从TFS构建
c:\TFS\App1\1.0.0.0\App.exe
c:\TFS\App1\1.0.0.1\App.exe
c:\TFS\App1\1.0.0.2\App.exe
我有另一个文件夹
c:\TFS\App1\Current
我每次构建服务时都会复制最新版本。 Windows机器上服务的安装路径来自当前文件夹,因此我不需要安装/卸载该服务。
因此,升级服务的过程目前如下:
1. Build
2. Stop Service
3. Copy from x.x.x.x folder to Current
4. Start Service
有没有办法制作某种快捷方式,以便每次部署新内容时都不会复制文件,我只是更改配置以指向新位置?
我在想的可能是创建一个叫另一项服务的服务,但我不知道这是否可行。
e.g。 安装名为" App1"那是从" C:\ TFS \ ServiceStarter \ Start.exe App1"运行的。 Start.exe.config文件将包含我想要运行的服务的位置。
每当我进行新的构建时,我都会转到start.exe.config并相应地更改路径。停止 - 启动服务,新版本正在运行。
新的升级方式是:
1. Build
2. Change config file to point to X.X.X.X location
3. Restart service
这可能吗?
答案 0 :(得分:0)
这不是你要求的,但它会使事情自动化很多。您可以使用简单的bat文件:
批处理文件命令:
@REM If the batch file is going to run as as administrator, the starting path will be the system32 folder. With this we ensure that the starting path is the folder containing the batch file.
@cd /d "%~dp0"
@REM stop and delete the previous service using the service name
sc stop MyServiceName
sc delete MyServiceName
@REM ask for the version of the service
set /p version="Enter version: "
@REM create the path to executable
SET relativePath=%CD%
SET executablePath=%relativePath%\%version%\App.exe
@REM istall the service
sc create MyServiceName binPath= "%executablePath%" DisplayName= "MyServiceName"
@REM start the service
sc start MyServiceName
pause
批处理文件执行
所以,你需要:
现在,只需执行批处理文件,您就可以切换到任何版本。