2016-12-03 4 views
3

Я нанял подрядчика, чтобы сделать некоторое кодирование для меня. Он установка nuget.config в папке решения со следующим путем в хранилище:C# visual studio как переместить папку пакета nuget?

<configuration> 
    <solution> 
    <add key="disableSourceControlIntegration" 
     value="true" /> 
    </solution> 
    <config> 
    <add key="repositoryPath" 
     value="../lib" /> 
    </config> 
</configuration> 

И я не слишком доволен своим решении: это поместить папку NuGet пакет вне папки решения. Я могу легко изменить путь к репозиторию, просто установив:

value="../<mySolutionFolder>/lib" /> 

Однако, когда я делаю это любопытная вещь: каждый справочник, который я использую в моем решении теперь сломана. И ничего, что я могу изменить в файлах .csproj или других файлах * .config, позволит моим проектам найти их ссылки.

Единственным обходным решением является воссоздание каждого проекта в моем решении, начиная с нуля, а также добавлять-> существующие элементы и т. Д., А также ссылаться-> управлять пакетами nuget и снова устанавливать каждую ссылку.

У меня есть много проектов в моем решении, и выполнение этого для каждого из них, по-видимому, занимает много времени.

Хотелось бы узнать, есть ли простой способ?

Похоже, что Nuget и VS должны хорошо играть, чтобы я мог легко переместить папку хранилища в другое место пути.

ответ

0

Package.config используется для размещения файла в другом месте из папки, это помогает не загружать пакет необычно, когда вы добавляете что-то в свой проект через Nuget.

Попробуйте скопировать пакет в эту папку (новый путь, который вы установили) или просто закройте проект, откройте его еще раз и нажмите «Восстановить» после перехода в Управление ссылкой на проект.

5

Одним из способов устранения ссылочных путей является использование консоли диспетчера пакетов.

В консоли менеджера пакетов вы можете запустить следующую команду, чтобы переустановить пакеты NuGet, которые будут исправлять пути подсказки для ссылок.

Update-Package -reinstall 

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

Существует дополнительная документация по reinstalling NuGet packages on the NuGet documentation site.

Другой способ исправить это - найти и заменить в файлах .csproj, чтобы исправить путь подсказки.

0

После попытки всех решений, размещенных здесь, я не мог избежать одного первичного вопроса: ссылок на не NuGet элементы, такие как System и System.Core оставались недействительными (желтый треугольник в список рядом с ними). Удаление их и их добавление не сделали их действительными снова. Далее (как мы все знаем) Visual Studio ужасно и дает основания для того, почему ссылка считается недействительной.

Таким образом, хотя решение Matt действительно перемещает папку пакета nuget, решение не остается в рабочем состоянии. Кроме того, обновление подсказок подсказок не помогло, поскольку они специфичны для пакетов nuget.Я не могу объяснить, почему основные ссылки, такие как System, также становятся недействительными. Возможно, кто-то, читающий это через год, может оставить сообщение с объяснением.

Что я в итоге сделал, это перестройка моего всего проекта без файла nuget.config (я его удалил). Это приводит к тому, что nuget использует все значения по умолчанию. Загруженные пакеты сохраняются в \\<solution_folder>\packages\. После того как раствор снова работает, я добавил файл обратно nuget.config, но со следующими удалены:

<config> 
    <add key="repositoryPath" 
     value="../lib" /> 
    </config> 

... и удаления этот раздел вызывает NuGet полагаться на поведение по умолчанию, которое оказывается именно то, что я хотел (установка пакетов в \ пакеты и т. д.).

Если кто-то еще предпримет это трудоемкое усилие, я нашел this SO solution полезным для перемещения папок и файлов из старого решения в новое.

0

Я столкнулся с этой проблемой, когда я переместил фактические папки в своем решении. Обычно я нахожу/заменяю код VS, ищущий >..\packages\ и заменяю его >..\..\packages\. На этот раз я сделал следующее:

  1. Выполните Update-Package -Reinstall
    • это работало на все с подсказкой путями
    • не работает, если ваш проект использует пакетов NuGet построить свой проект, потому что есть пользовательский MSBuild операторы, которые должны быть исправлены вручную, см. следующий шаг.
  2. Отредактируйте .csproj файлов вручную, не строить, в моем примере:
 
<Import Project="..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.8\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.8\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" /> 
<Import Project="..\..\packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\..\packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props')" /> 

Уведомления, что есть 2 условие утверждения в <Import>, которые используют относительную Pathing для ..\..\packages.

Надеюсь, эти шаги помогут кому-то еще.

Смежные вопросы