转换配置文件

时间:2018-11-05 02:06:14

标签: c# .net .net-core nuget csproj

我正在构建一个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。

谢谢,我期待大家的反馈!

0 个答案:

没有答案