Цели пакета NuGet - как скопировать файлы в подпапку целевого каталога при сборке? - PullRequest
1 голос
/ 29 марта 2019

Я пытаюсь добавить два текстовых файла в свой пакет nuget, чтобы, когда пользователь пакета строил проект, один файл копировался в корень каталога сборки, а другой файл копировался в подпапку root вроде этого

\bin\Debug\ - 1.TXT
            - SubFolder\  - 2.TXT

Эта структура каталогов является требованием сборок в пакете, которые будут искать эти файлы в определенных местах во время выполнения.

На основании этого https://stackoverflow.com/a/30386836/1462656 а это https://stackoverflow.com/a/44752745/1462656

Я могу создать целевой файл, который копирует 1.txt в корень, но когда я добавляю пакет в проект и собираю его, он просто копирует 2.txt в корень. Я создал папку для сборки следующим образом

enter image description here

И файл моих целей выглядит так

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <ItemGroup>
  <None Include="$(MSBuildThisFileDirectory)1.txt">
     <Link>1.txt</Link>
     <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </None>
  <None Include="$(MSBuildThisFileDirectory)SubFolder\2.txt">
     <Link>2.txt</Link>
     <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </None>  
 </ItemGroup>
</Project>

Как вы получаете его, чтобы создать SubFolder и скопировать файл в эту папку?

Изначально я использовал папку content для добавления файлов содержимого с подпапками в пакет nuget, но обнаружил, что хотя файлы были добавлены с правильной структурой каталогов в само решение, файлы были добавлены с установленными атрибутами в «Не копировать», чтобы они не были скопированы в каталог сборки - поэтому я переключился на вышеуказанный подход. Есть ли способ объединить два подхода?

1 Ответ

0 голосов
/ 29 марта 2019

Я думаю, что решил это с помощью следующего

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <ItemGroup>
    <RequiredFiles Include="$(MSBuildThisFileDirectory)**\*" />
    <None Include="@(RequiredFiles)">
     <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
     <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </None>  
 </ItemGroup>
</Project>

На основе решения, найденного здесь https://stackoverflow.com/a/30316946/1462656

...