2

Последующий Migrating MSBuild-Integrated solutions to use Automatic Package Restore. , , поэтому в Visual Studio я удалил все ссылки NuGet из всех .csproj файлов в растворе несколько проектов, и я также удалил файлы:Как изменить расположение пакета.config при установке пакета NuGet

.nuget/NuGet.exe
.nuget/Nuget.targets

и только продолжал:

.nuget/NuGet.Config

Затем в Package Manager Console, пытаясь установить пакет:

PM> Get-Project myProject | Install-Package somePackage -Version 1.0 

приводит к «успешной установки», но ссылка не добавляется в узел Ссылки для MyProject

enter image description here

и packages.config создается в:

.nuget/packages.config

и не в:

MyProject/packages.config

Как изменить место установки, чтобы NuGet установил его в корневой каталог myProject?

Примечание с помощью:
Package Manager Console хоста Версия 2.8.50926.663
Visual Studio 2013 Pro

+1

Какой пакет NuGet вы устанавливаете? Только решение. Пакеты NuGet будут обновлять файл .nuget/NuGet.Config и не добавлять ничего в файл project.config проекта. –

+0

Я устанавливаю пакет из локальной фиды. Итак, как вы устанавливаете пакет в конкретный проект, а не в решение? –

+2

Большинство пакетов будет установлено в проект. Некоторые из них установят в решение, поскольку это только пакеты решений. Одним из примеров является OpenCover, который не будет установлен в проект. Какой пакет NuGet вы устанавливаете? Нет настройки NuGet, которая влияет на файл packages.config. Это зависит только от пакета, который вы устанавливаете, будь то пакет решения или нет. –

ответ

2

Благодаря Мэтту Уорду, я нашел проблему. Я ошибочно создал и установил пакет уровня решения. Это произошло потому, что я не добавлял dll в папку lib при создании пакетов nuget с использованием NuGet Package Explorer.

enter image description here

Более подробную информацию можно найти здесь:

Creating a solution-level package

Пакет решений уровня является один, который устанавливает инструмент или дополнительные команды для консоли Package Manager, но не добавлять ссылки, контента или создавать настройки для любых проектов в вашем решении.Например, пакет psake устанавливает сценарии Powershell, которые вы можете использовать для автоматизации процесса сборки.

Пакет считается пакетом уровня решения, если он не содержит файлов в своих каталогах lib, content или build. Если у пакета есть зависимости, они также не должны иметь файлы в своих каталогах lib, content или build.

Когда установлен пакет уровня решения, он отслеживается в файле package.config в каталоге .nuget, а не в файле package.config в конкретном проекте.

0

Синтаксис установки пакета через менеджер пакетов консоли заключается в следующем:

Синтаксис:

Install-Package [-Id] <string> [-IgnoreDependencies] [-ProjectName <string>] [-Version <string>] [-Source <string>] [-IncludePrerelease] [-Force] [-FileConflictAction] [-DependencyVersion <dependencyVersion>] [-WhatIf]

Для установки пакета в конкретном проекте вы должны использовать следующую команду:

PM> Install-Package somePackage -Project myProject

Если опустить -Project параметров проекта по умолчанию (из раскрывающегося списка) выбран.

+0

PM> Install-Package somePackage -Project myProject не работает. Он по-прежнему устанавливается в папку .nuget. Есть ли параметр NuGet, который вызывает это? –