.net core 如何将安装项目(vdproj)的自定义操作与.NET Core一起使用

.net core 如何将安装项目(vdproj)的自定义操作与.NET Core一起使用,.net-core,visual-studio-setup-proje,.net Core,Visual Studio Setup Proje,我想为用.NETCore3.1编写的自托管服务创建一个安装程序。我使用的是Visual Studio 2019,因此我必须安装VisualStudioClient.MicrosoftVisualStudio2017InstallerProjects,这允许我创建安装项目 所以,现在一切正常,除了在安装过程中我不能运行任何代码!在标准的.NET框架中,有一个安装程序类,它使我能够插入一些函数,比如“注册并启动服务”。但是.NETCore没有这样的功能 那么,在安装完成后,如何运行额外的C#代码呢?

我想为用.NETCore3.1编写的自托管服务创建一个安装程序。我使用的是
Visual Studio 2019
,因此我必须安装
VisualStudioClient.MicrosoftVisualStudio2017InstallerProjects
,这允许我创建
安装项目

所以,现在一切正常,除了在安装过程中我不能运行任何代码!在标准的.NET框架中,有一个
安装程序
类,它使我能够插入一些函数,比如“注册并启动服务”。但是.NETCore没有这样的功能


那么,在安装完成后,如何运行额外的C#代码呢?

事实证明,
安装程序类已不再受支持,而且在可预见的将来可能也不再受支持

解决方法是将服务exe本身作为自定义代码、运行be参数的主机

步骤:

  • 在解决方案中,在.Net核心服务所在的位置添加“安装项目”项目。(必须是相同的解决方案)
  • 转到
    文件系统
    ->
    应用程序文件夹
    并添加
    PublishItemsOutputGroup
  • 转到“自定义操作”视图,选择exe名称,将自定义操作
    PublishItemsOutputGroup
    添加到
    Install
    。(例如,它应该说
    (name)PublishItemsOutputGroup from MyApiService(Active)
  • 参数设置为
    /my\u Install
  • 在服务中形成
    Main
    ,并添加如下内容:
  • 一旦运行它,您将在
    System32
    dir中找到
    test\u install\u ca.txt,内容为
    /my\u install
  • if (args.Length == 1)
    {
           File.AppendAllText("test_install_ca.txt", args[0]);
           return;
    }