windows-services - 使用.net core 3.1中的设置文件,单文件发布windows服务
问题描述
如何在 3.1 net core 中构建的 Windows 服务中正确使用 JSON 设置文件,这些文件发布在单个文件中。
解决方案
- 作为单个文件发布,需要您做两件事。首先,从单个文件中排除设置 JSON 文件。如果您不这样做,它将与其余部分一起解包,加载并且如果其中有默认值,它将看起来可以工作。其次,将设置文件复制到发布目录。您可以通过添加以下内容来做到这一点:
<ItemGroup>
<Content Update="appsettings.json">
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</Content>
</ItemGroup>
在您的 pubxml 个人资料中。从界面构建它:构建>发布(项目名称)将不起作用。从现在开始你必须使用命令行。
- 一旦打包到单个文件中,应用程序的基本路径就会更改。简单地将 JSON 文件放在你的 exe 旁边是不行的。此外,您将使用 Windows 服务。启动exe是一回事,启动服务是另外一回事。在大多数情况下,您可以使用以下内容:
Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);
获取您的单文件打包 exe 服务的目录。
- 打包的 exe 检查它为资源创建的临时文件夹,您需要将一些功能重定向到另一个文件夹。您将希望这样做,至少对于您的日志文件和设置。例如,如果您希望应用程序检查您的 exe 附近的 JSON 文件,则添加以下内容:
.ConfigureAppConfiguration((context, config) =>
{
config.SetBasePath(Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName));
})
在你的CreateHostBuilder
方法中。
我希望这可以为您节省一些时间。我整个上午都在为此奋斗。
推荐阅读
- laravel - SQLSTATE[08006] [7] FATAL:当我尝试在 laravel 中迁移时,数据库“test-database”不存在
- arrays - 变体数组到范围,设置范围数据类型以相应地匹配?
- python - 单击python selenium中的svg图像
- javascript - 向 Django 服务器请求时不支持的媒体类型“multipart/form-data;boundary=----WebKitFormBoundaryABC”
- excel - 是什么导致此 VBA 代码需要这么长时间才能运行?
- c - c编程scanf不会两次读取输入
- r - 在R中的列之间减去值
- mysql - 使用带有 Mariadb 和 PAM 身份验证的 Windows MySQL Workbench 8.0
- ruby-on-rails - 寻求帮助以防止添加包含太多列的表
- node.js - “npm update -g create-react-app” 不会像它应该做的那样更新 create-react-app