Запретить добавление файлов содержимого при восстановлении Nuget - PullRequest
0 голосов
/ 11 декабря 2018

У нас есть несколько исполняемых файлов, которые нам нужны для создания наших установок.Итак, мы упаковали внешние зависимости, являющиеся некоторыми файлами .exe, в пакет nuget.Но при восстановлении NuGet они добавляются в корневой каталог проекта.

Как этого добиться?

Обыскали, но пока не нашли никакого решения.

Так как мыиспользуйте файл nuspec, вот что у меня есть:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
 <metadata>
<id>VCRedistributable</id>
<version>$version$</version>
<title>VCRedistributable</title>
<authors>--</authors>
<owners>--</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>InstallVCRedistributable assemblies</description>
<contentFiles>
    <files include="**" exclude="**" buildAction="None" copyToOutput="false" 
 />
</contentFiles>
</metadata>

<files>
  <file src="VC\x86\*.*" target="content\x86" />
  <file src="VC\x64\*.*" target="content\x64" />
</files>

Есть идеи?

1 Ответ

0 голосов
/ 12 декабря 2018

Запретить добавление файлов содержимого при восстановлении Nuget

Вместо папки content следует указывать папку tools .

Итак, ваш файл .nupsec должен быть:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
 <metadata>
   <id>VCRedistributable</id>
   <version>$version$</version>
   <title>VCRedistributable</title>
   <authors>--</authors>
   <owners>--</owners>
   <requireLicenseAcceptance>false</requireLicenseAcceptance>
   <description>InstallVCRedistributable assemblies</description>

  </metadata>

  <files>
    <file src="VC\x86\*.*" target="tools\x86" />
    <file src="VC\x64\*.*" target="tools\x64" />
  </files>
</package>

Это потому, что каталог содержимого является рабочим каталогом, основанным на соглашениях, содержимое которого копируется в корневой каталог проекта:

Conventionрабочий каталог на основе :

enter image description here

Кроме того, если вы добавляете в пакет nuget внешние файлы .exe, добавлять их не нужнометка contentFiles, эта метка используется для файла содержимого для packagereference.

<contentFiles>
    <files include="**" exclude="**" buildAction="None" copyToOutput="false" 
 />
</contentFiles>

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

Обновление:

Это хорошее соглашение для создания нашей собственной структуры папок, отличной от определенной NuGet, поскольку на основании приведенного выше описания папки инструментов кажется, что они будут доступны через диспетчер пакетов.

Конечно,Вы можете использовать собственную структуру папок, отличную от определенной в NuGet.Но вы должны заметить, что для этого будет предел. Вы НЕ МОЖЕТЕ просто включить свою собственную структуру папок, вам также нужно добавить определенную структуру папок NuGet в .nuspec, в противном случае nuget не удастся установить с такой ошибкой, как:

Не удалось установить пакет MyCustomPackage 1.0.0.Вы пытаетесь установить этот пакет в проект, который нацелен на '.NETFramework, Version = v4.6.1', но пакет не содержит никаких ссылок на сборки или файлов содержимого, совместимых с этой платформой.

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

Надеюсь, это поможет.

...