Преобразование файлов конфигурации - PullRequest
0 голосов
/ 05 ноября 2018

Я создаю пакет Nuget, который выступает в качестве регистратора для других приложений. Одна из функций, которая необходима для размещения различных свойств конфигурации (слабые URL-адреса веб-крючка, имя приложения и т. Д.), И разработчик может редактировать эти значения в app.config или в любом другом файле конфигурации.

Одним из подходов, которые я использовал, было создание файлов преобразования, предложенных в документации, предоставленной Microsoft здесь

Однако при тестировании пакета nuget в консольном приложении как с .Net Framework, так и с Core файлы конфигурации не имеют параметров, которые файлы преобразования имеют из пакета nuget. После некоторых исследований выясняется, что если проект использует PackageReference, он не может вносить изменения в файл конфигурации.

Для проектов, использующих package.config, NuGet поддерживает возможность преобразований в исходный код и файлы конфигурации во время установки и удаления пакетов. Только преобразования исходного кода применяются, когда пакет установлен в проекте с использованием PackageReference.

Последнее решение, которое я попробовал, было из этого SO вопроса здесь из одного из комментариев. Тем не менее, до сих пор не вижу изменений.

Прямо сейчас я вывожу файл конфигурации после сборки в корневую папку приложения. Затем пакет nuget извлекает свойства конфигурации в класс, который может использоваться несколькими регистраторами.

Вот файл 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.

Спасибо, и я с нетерпением жду отзывов всех!

...