Я создаю пакет 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.
Спасибо, и я с нетерпением жду отзывов всех!