使用.net core 3.1中的设置文件,单文件发布windows服务



如何在3.1 net core中构建的windows服务中正确使用JSON设置文件

  1. 作为单个文件发布需要做两件事。首先,从单个文件中排除设置JSON文件。如果您不这样做,它将与其他文件一起解包,加载,并且如果其中有默认值,它将看起来可以工作。其次,将设置文件复制到发布目录。您可以添加以下内容:
<ItemGroup>
<Content Update="appsettings.json">
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</Content>
</ItemGroup>

在您的pubxml配置文件中。使用:Build>发布(项目名称)不起作用。从现在开始你必须使用命令行。

  1. 一旦打包成一个文件,应用程序的基本路径就会改变。简单地将JSON文件放在exe旁边是行不通的。此外,您将使用windows服务。启动exe是一回事,启动服务是另一回事。在大多数情况下,您可以使用以下命令:
Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);

获取单文件打包exe服务的目录。

  1. 打包的exe检查它为资源创建的临时文件夹,您需要将一些功能重定向到另一个文件夹。您需要这样做,至少对于您的日志文件和设置是这样。例如,如果您希望应用程序检查exe附近的JSON文件,您可以添加以下内容:
.ConfigureAppConfiguration((context, config) =>
{
config.SetBasePath(Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName));                    
})

在你的CreateHostBuilder方法。

我希望这会节省你一些时间。我整个上午都在和这个问题斗争。

最新更新