NuGet - как включить файл app.config приложения в выходные данные сборки приложений-потребителей? - PullRequest
0 голосов
/ 05 мая 2020

Как я могу заставить мой пакет NuGet включить его app.config в выходной каталог сборки проекта, который использует пакет NuGet? В настоящее время он копирует только NuGetConfigInclude.exe, но мне нужно, чтобы он также имел файл NuGetConfigInclude.exe.config. Обратите внимание, что приложение-потребитель использует PackageReference в файле .csproj. Он не использует packages.config.

NuGetConfigInclude.nuspe c:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>NuGetConfigInclude</id>
    <version>1.0.0.0</version>
    <title>NuGetConfigInclude</title>
    <authors>NuGetConfigInclude</authors>
    <owners>NuGetConfigInclude</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>NuGetConfigInclude</description>
    <releaseNotes>Test Summary</releaseNotes>
    <copyright>Copyright 2020</copyright>
    <tags>TEST</tags>
  </metadata>
</package>

Потребляющий файл проекта приложения:

  <ItemGroup>
    <PackageReference Include="NuGetConfigInclude">
      <Version>1.0.0</Version>
    </PackageReference>
  </ItemGroup>

UPDATE:

Мне удалось заставить nuspe c включить файл в пакет, но в проекте-потребителе он пытается скомпилировать файл конфигурации:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>NuGetConfigInclude</id>
    <version>24.0.0.0</version>
    <title>NuGetConfigInclude</title>
    <authors>NuGetConfigInclude</authors>
    <owners>NuGetConfigInclude</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>NuGetConfigInclude</description>
    <releaseNotes>Test Summary</releaseNotes>
    <copyright>Copyright 2020</copyright>
    <contentFiles>
      <files include="contentFiles\any\any\assets\**" buildAction="None" copyToOutput="true" flatten="false" />
    </contentFiles>
    <tags>TEST</tags>
  </metadata>
  <files>
    <file src="bin\Debug\NuGetConfigInclude.exe.config" target="contentFiles\any\any\assets"/>
  </files>
</package>

Пример Ошибки при сборке проекта-потребителя:

Код серьезности Описание Ошибка состояния подавления строки файла проекта CS1022 Тип, определение пространства имен или ожидаемый конец файла NuGetConsumer C: \ Users \ GuestAcct.nuget \ packages \ nugetconfiginclude \ 24.0.0 \ contentFiles \ any \ any \ assets \ NuGetConfigInclude.exe.config 1 Активный

1 Ответ

0 голосов
/ 05 мая 2020

Это решение сработало:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>NuGetConfigInclude</id>
    <version>29.0.0.0</version>
    <title>NuGetConfigInclude</title>
    <authors>NuGetConfigInclude</authors>
    <owners>NuGetConfigInclude</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>NuGetConfigInclude</description>
    <releaseNotes>Test Summary</releaseNotes>
    <copyright>Copyright 2020</copyright>
    <contentFiles>
      <files include="**/*.*" buildAction="None" copyToOutput="true" flatten="true" />
    </contentFiles>
    <tags>TEST</tags>
  </metadata>
  <files>
    <file src="bin\Debug\NuGetConfigInclude.exe.config" target="contentFiles\any\any\"/>
  </files>
</package>

Важно отметить, что если ваш потребляющий проект использует PackageReference, тогда файлы необходимо скопировать в папку с именем contentFiles.

...