Как скопировать текстовый файл, включенный вместе с DLL в пакет NuGet?
Когда я использую свой пользовательский пакет NuGet в другом решении (c:\dev\
в этом примере), результирующая файловая структура внутри c:\dev\package\projectId\lib\netstandard2.0\
содержит множество библиотек DLL и текстовый файл, скажем, file.txt
. Все библиотеки DLL копируются при построении решения, но текстовый файл остается.
В файле .nuspec
я изначально включил файл под <files><file src="foo\file.txt" target="lib\netstandard2.0"/></files>
. file.txt
оказывается в папке пакетов при восстановлении пакета NuGet, но не копируется в каталог сборки.
Попытка 1: я попытался использовать свойство contentFiles
в файле nuspec, поскольку ссылка на nuspec указывает туда несколько раз. Я получил команду nuget.exe pack
для работы с этим новым свойством (т. е. без синтаксических ошибок), но способ обработки содержимого (file.txt
) не изменился.
Попытка 2: я пытался использовать файл projectId.targets
. Здесь используется Target
, у которого есть ItemGroup
, включающий файл. Затем я попытался использовать событие Copy
, указав на папку назначения как $(OutputPath)
.
Кажется ужасно сложным скопировать файл, включенный в пакет, в каталог сборки, чтобы погрузиться в события MSBuild и тому подобное.
Я в недоумении здесь, и любые указатели будут приветствоваться.
Правка № 1:
Я попытался добавить этот раздел в метаданные в соответствии с приведенным ниже предложением:
<contentFiles>
<files include="any\any\file.txt" buildAction="EmbeddedResource" />
</contentFiles>
Это работает в небольшом тестовом примере. file.txt
прекрасно отображается как в Visual Studio, так и в каталоге сборки. Как ни странно, это не работает в моем основном проекте с использованием точно такого же синтаксиса (в обоих случаях я использую .NET Core 2.0). Кроме того, в обозревателе пакетов NuGet он отображается в содержимом пакета, когда он один. Но когда я добавляю что-то под <files><file src="lib\netstandard2.0\test.dll" target="lib\netstandard2.0"/></files>
, оно исчезает из этого представления.
Правка № 2:
Я думаю, что происходит что-то еще... Вот файл . nuspec из нашего основного проекта. Когда я добавляю файл содержимого с приведенными ниже рабочими предложениями, он все равно не отображается (для .NET Core 2.0 или .NET Framework 4.7.1). Файл .targets
как-то мешает?