问题描述
我想为我用 .NET Core 3.1 编写的自托管服务创建一个安装程序。我正在使用 Visual Studio 2019
,所以我必须安装 VisualStudioClient.MicrosoftVisualStudio2017InstallerProjects
,这允许我创建 Setup Project
。
所以,现在一切正常,只是我在安装过程中无法运行任何代码!在标准的 .NET Framework 中,有 Installer
类使我能够注入一些功能,例如“注册和启动服务”。但是 .NET Core 没有这样的东西!
那么如何在安装完成后运行额外的 C# 代码?
解决方法
事实证明,Installer class
不再受支持,并且可能在可预见的未来也不会支持。
解决方法是将服务 exe 本身作为自定义代码的宿主,运行参数。
步骤:
- 在解决方案中,您的 .Net Core 服务所在的位置添加“设置项目”项目。 (它必须是相同的解决方案)
- 转到
File System
->Application Folder
并添加PublishItemsOutputGroup
- 转到自定义操作视图并将自定义操作
PublishItemsOutputGroup
添加到Install
,并选择您的 exe 名称。 (例如,它应该说(name) PublishItemsOutputGroup from MyApiService (Active)
) - 将
arguments
设置为/my_Install
- 您可以在服务中形成
Main
并添加如下内容:
if (args.Length == 1)
{
File.AppendAllText("test_install_ca.txt",args[0]);
return;
}
- 运行后,您会在
test_install_ca.txt
目录中找到System32
,内容为/my_Install