我正在构建一个Nuget程序包,它充当其他应用程序的记录器。它需要容纳不同的配置属性(松弛的webhook URL,应用程序名称等)的功能之一,开发人员可以在app.config
或任何配置文件中编辑这些值。
我使用的一种方法是创建Microsoft提供的文档here
建议的转换文件。但是,在同时使用.Net Framework和Core的控制台应用程序上测试nuget程序包时,配置文件不具有转换文件从nuget程序包中获得的设置。经过一番研究,结果发现该项目是否使用PackageReference
,它无法更改配置文件。
对于使用packages.config的项目,NuGet支持在软件包安装和卸载时对源代码和配置文件进行转换的功能。使用
PackageReference
将软件包安装在项目中时,仅应用源代码转换。
我尝试的最后一个解决方案是来自其中一个注释的SO问题here。但是,仍然看不到更改。
现在,我正在将构建后的配置文件输出到应用程序的根文件夹。然后,nuget包将config属性拉入一个类,该类可以在不同的记录器之间共享。
这是nuspec
文件:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>POS_LoggingModule</id>
<version>1.0.13</version>
<authors>...</authors>
<owners>...</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Simple library to post logging to a Slack channel.</description>
<tags>Slack</tags>
<dependencies>
<group targetFramework=".NETStandard2.0">
<dependency id="Microsoft.Extensions.Configuration" version="2.1.1" exclude="Build,Analyzers" />
<dependency id="Newtonsoft.Json" version="11.0.2" exclude="Build,Analyzers" />
<dependency id="System.Diagnostics.EventLog" version="4.5.0" exclude="Build,Analyzers" />
</group>
</dependencies>
<contentFiles>
<files include="any/netstandard2.0/contentFiles/logging.config" buildAction="Content" />
</contentFiles>
</metadata>
<files>
<file src="bin\Debug\netstandard2.0\POS_LoggingModule.dll" target="lib\netstandard2.0\POS_LoggingModule.dll" />
<file src="contentFiles\logging.config" target="content\contentFiles\logging.config" />
<file src="contentFiles\logging.config" target="contentFiles\any\netstandard2.0\contentFiles\logging.config" />
</files>
</package>
nuget软件包使用.Net Core 2.1和.Net Framework 4.6.1。一位资深开发人员建议我将其更改为.Net Standard。
谢谢,我期待大家的反馈!