我怎样才能做到这一点?
我怎样才能做到这一点?
这是一个例子:
<PropertyGroup> <DeployWinService>false</DeployWinService> <WinServiceName>MyService</WinServiceName> <TargetWinServiceHost Condition="'$(TargetWinServiceHost)' == ''">localhost</TargetWinServiceHost> </PropertyGroup> <Target Name="AfterCompile"> <CallTarget Targets="PublishWinService" /> </Target> <Target Name="PublishWinService" Condition="'$(DeployWinService)' == 'true'"> <Exec Command="sc stop $(WinServiceName)" ContinueOnError="true" /> <Exec Command="sc \\$(TargetWinServiceHost) create $(WinServiceName) binpath= '$(OutDir)\$(AssemblyName).exe' start= auto" /> </Target>
这里我们定义了自定义MSBuild属性DeployWinService和TargetWinServiceHost,它们用于控制是否在编译后安装Windows Service项目的输出以及安装到哪台机器. WinServiceName属性只是指定Windows服务在目标计算机上将具有的名称.
在构建定义中,您必须在“高级”部分的“MSBuild参数”字段中显式设置DeployWinService和TargetWinServiceHost属性:
/p:DeployWinService=true;TargetWinServiceHost=MACHINENAME
相关资源:
> How to create a Windows service by using Sc.exe
> Common MSBuild Project Properties