Подтвердить что ты не робот

Сборка NuGet вне папки lib

Я собираюсь задать пару вопросов здесь... во-первых, с NuGet можно создать пакет из нескольких DLL? Нет проекта визуальной студии, просто командной строки и нескольких предварительно скомпилированных DLL файлов.

Во-вторых, если предположить, что это возможно, почему я постоянно получаю предупреждение "Сборка за пределами папки lib"? Я пробовал все, что я могу придумать, чтобы связать сборки, чтобы добавить себя в качестве ссылок внутри пакета NuGet.

Моя файловая структура выглядит следующим образом

 Root
   - File1.dll
   - lib
     - File2.dll
     - File3.dll

Когда я говорю NuGet, чтобы упаковать его с помощью .nuspec, подобного этому

<?xml version="1.0"?>
<package >
  <metadata>
    <id>File1.dll</id>
    <version>1.0.0</version>
    <authors>thisguy</authors>
    <owners>thisguysmom</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>This is some library</description>
    <releaseNotes>Porting to NuGet</releaseNotes>
    <copyright>Copyright 2012</copyright>
    <references>
      <reference file="File2.dll" />      
      <reference file="File3.dll" />
    </references>
  </metadata>
</package>

Я получаю это предупреждение. Из того, что я читаю, мне не нужно даже определять ссылки node в любом из моих проектов, так как элементы папки lib должны автоматически добавляться в качестве ссылок?

Кто-нибудь знает этот беспорядок NuGet?

4b9b3361

Ответ 1

Любая DLL, на которую вы хотите ссылаться, должна находиться в папке lib. Предупреждение связано с тем, что файл file1.dll находится за пределами lib и будет игнорироваться во время установки пакета. (Другая специальная папка - это "контент" и "инструменты" ).

Я использовал эту структуру:

Root
  - lib
    - File1.dll
    - File2.dll
    - File3.dll

Подробнее см. http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#Package_Conventions.

Ответ 2

Я столкнулся с этой проблемой. Nuget ожидает структуру, которая выглядит так:

root
  - lib
    - net40
      - File1.dll
      - File2.dll
      - File3.dll

net40 или net20 или net45 в зависимости от вашей версии .net.

run

nuget pack yourlibrary.nuspec

чтобы упаковать его.

упакует эту оптовую опцию и поместит ее в nupkg. Сообщения об ошибках исчезнут в этой точке.

Ответ 3

С версией NuGet, текущей с этого поста (и я предполагаю, что и более поздние версии), вы можете использовать файл .csproj в тандеме с файлом .nuspec для создания пакета. То, что мы сделали, это сделать файл .nuspec(используя спецификацию nuget, а затем настроить его) и включить его в проект.

С помощью настроенного файла .nuspec мы использовали команду:

nuget pack sample.csproj -IncludeReferencedProjects

В этот момент он построил .nupkg и не выпустил проблем. Файл .nupkg появился в обычной выходной папке (в моем случае по умолчанию, bin\debug).

Ответ 4

Вы можете добавить ссылки на другую dll, добавив ниже внутренний тег в файл nuspec

<package>
   <metadata>
      ...
</metadata>
<files>
 <file src="..\ReferencedFolder\*.*" target="lib\net40\" />
</files>
</package>

Ответ 5

Alexandre ссылается на папку "lib", которая создается при создании пакета NuGet. Вы можете открыть .nupkg так же, как и любой zip файл. Там вы увидите папку lib\netXX, где XX - это версия платформы .NET, на которую вы нацеливаетесь. Поэтому, когда вы упаковываете свой файл NuGet, убедитесь, что File1.dll находится внутри папки lib.

Ответ 6

Они попадают в папку "lib", будучи включенными в вашу папку bin\debug или bin\release в .NET. Поэтому вам нужно собрать компиляцию проекта, чтобы скопировать локальную часть на внешние DLL, чтобы она включала их в папку bin при компиляции.

Ответ 7

Я использовал решение проф Von Lemongargle, и для меня это было отличное решение. Важно:

  • Включить спецификационный файл (с правой кнопкой мыши- > Включить в проект) в проекте
  • Отдайте спецификацию файла SAME FILENAME вашего проекта (myproject.csproj, myproject.nuspec)

Эта работа отлично работает в Visual Studio 2012.