2012-03-01 2 views
7

Я пытаюсь создать пакет NuGet из моего проекта после этого руководства http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-packageNuGet packages.config и конкретная версия

Я успешно создал nuspec и nupkg. Мой проект содержит зависимость от Json.NET, которую я установил через Nuget. Однако я хочу указать конкретную версию Json.NET для использования, версию 4.0.7. Я добавил ниже моей nuspec:

<dependencies> 
    <dependency id="Newtonsoft.Json" version="[4.0.7]" /> 
</dependencies> 

Когда я бегу nuget pack, кажется, чтобы обнаружить у меня есть packages.config

Using 'MyProject.nuspec' for metadata. 
Found packages.config. Using packages listed as dependencies. 

Это, кажется, полностью игнорировать мою определенную зависимость в nuspec как установка Пакет Nuget перечисляет зависимости как> = 4.0.7, которые извлекаются в последней версии 4.0.8.

Как я могу остановить это или предпочтительно сохранить Nuget в зависимостях от package.config, но разрешить ли мне переписывать определенные зависимости?

ответ

18

Я попал в ту же проблему. Вам нужно определить точную версию, как этот

<dependencies> 
<dependency id="Newtonsoft.Json" version="[4.0.7,4.0.7]" /> 
</dependencies> 

Так что обеспечит, когда проект тянет в зависимости будет = 4.0.7 не> = 4.0.7

+1

Хотя [4.0.7.4.0.7], очевидно, будет работать, [4.0.7] * должен * работать. Если это не так, есть ошибка. Это сработало для меня, но я точно не знаю, что вы делали. Пожалуйста, [сообщите об ошибке] (http://nuget.codeplex.com/WorkItem/Create) с тем, что вы сделали, поэтому мы можем это исправить. Благодаря! –

3

Пути вы определили вашу версию верно; как показано в нашем versioning docs, [1.0] означает 'version == 1.0'. Поведение, которое вы описываете, было бы ошибкой, но я не смог воспроизвести ошибку. То, что я сделал:

  • создал библиотеку классов
  • Добавлено Json.NET через NuGet (он установлен 4.0.8)
  • Exec'd nuget spec
  • Добавлено <dependencies><dependency id="Newtonsoft.Json" version="[4.0.7]" /> в .nuspec
  • Exec 'd nuget pack
  • Открыт пакет в Проводнике пакетов; он показывает зависимость как '= 4.0.7'
  • Установил мой пакет в новом проекте; она показывает зависимость как '= 4.0.7' и устанавливает 4.0.7

screen capture screen capture 2

Может быть, вы не используете последнюю версию nuget.exe или расширение Visual Studio NuGet? Когда вы говорите, что «перечисляет зависимость», где вы это видите? Когда ваш пакет установлен, в обозревателе пакетов или где-то еще?