1. 工程创建
工程目标框架可为 .NetFramework 或 .NetCore,模板为 .NetCore下的API工程,正常编写工程代码即可
2.转换项目为Windows服务
- 修改工程的 .csproj 文件,添加Windows 运行时标识符
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>
- 添加
Microsoft.AspNetCore.Hosting.WindowsServices
引用包 - 修改 Program.cs 文件
public class Program
{
public static void Main(string[] args)
{
// 1.修改为调用 RunAsService()
CreateWebHostBuilder(args).Build().RunAsService();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
// 2.调用 UseContentRoot 并使用应用的发布位置路径
var pathToExe = Process.GetCurrentProcess().MainModule.FileName;
var pathToContentRoot = Path.GetDirectoryName(pathToExe);
return WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
// Configure the app here.
})
.UseContentRoot(pathToContentRoot)
.UseStartup<Startup>();
}
}
appsettings.json
文件配置
"urls": "http://*:5001" // *标识ip全称
3. 发布工程
可用VS内嵌发布插件发布,格式为“文件系统”,或者使用命令行发布,在解决方案文件夹下执行命令(运行时根据工程而定):
dotnet publish --configuration Release --runtime win-x64
4. sc命令工具打包服务(管理员身份执行)
-
创建服务:
在打包后的文件夹下执行命令:
sc create MyServiceName.exe binPath= "MyServiceName.exe path"
注意:binPath 值是应用的可执行文件的路径,其中包括可执行文件的文件名。 等于号和路径开头的引号字符之间需要添加空格。 -
启动服务
sc start MyServiceName.exe
服务启动成功后,若是Web 应用时,在应用所在路径中浏览应用,默认路径 http://localhost:5000,若appsetting已配置,则按配置地址 -
停止服务
sc stop MyServiceName.exe
-
卸载服务
sc delete MyServiceName.exe
END |