Как изменить ссылку на пакет NuGet в проекте Visual Studio для использования Nuget.config - PullRequest
1 голос
/ 30 марта 2020

У меня есть файл проекта Visual Studio с расширением .csproj. Внутри него есть ссылки вроде этого:

<Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props"....

Я сейчас сделал файл NuGet.config в родительской папке из папки решения. И я удалил локальную папку «пакеты». В новом nuget.config я установил общее место для хранения пакетов.

nuget.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <config>
        <add key="repositoryPath" value="D:\Data\NuGet" />
    </config>
    <packageRestore>
        <add key="enabled" value="True" />
    </packageRestore>
</configuration>

При сборке я теперь получаю эту ошибку:

Этот проект ссылается на пакет (ы) NuGet, которые отсутствуют в этом компьютер. Используйте NuGet Package Restore, чтобы загрузить их. Для получения дополнительной информации ... Отсутствующий файл: .. \ packages \ Microsoft. Net .Compilers.1.0.0 \ build \ Microsoft. Net .Compilers.props.

Как я могу решить эту проблему?

Если мне придется вручную заменить элементы (Import Project = ".. \ packages ...) в файле проекта, что мне следует сделать? измените его так, чтобы он соответствовал конфигурации из Nuget.config?

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

Если мне придется вручную заменить элементы (Import Project = ".. \ packages ...) в файле проекта, на что я должен изменить его, чтобы он соответствовал конфигурации из Nuget.config ?

Поскольку вы используете новый файл nuget.config, который изменил путь к локальной ссылке на nuget (например, <add key="repositoryPath" value="xxxxxx" />).

И Восстановите будет восстанавливать только недостающие пакеты nuget, но не будет меняться для использования нового местоположения пакета nuget в xxx.csproj.

Так что вы можете выполнить мои действия для решения проблемы:

Решение

1) Инструменты -> Диспетчер пакетов Nuget -> Консоль диспетчера пакетов ->

введите Update-Package -reinstall, чтобы переустановить эти пакеты для ссылки на новый правильный путь.

2) введите файл xxxx.csproj, удалите эти дубликаты, старую import информацию, подобную этой:

 <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\..\..\..\..\..\installed_packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />

 <Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />

3 ) Затем перестройте свой проект и решите эту проблему.

Обновление 1

Новый файл Nuget.config Убедитесь, что вновь установленные пакеты nuget используют новый ссылочный адрес, но для ранее установленных пакетов nuget ссылочный адрес в файле xxx.csporj останется старым адресом. Процедура Restore восстанавливает только пакет nuget по новому пути, но не вносит изменений в ссылку на nuget в файле xxx.csproj, поэтому ее можно только переустановить.

Помимо , узел импорта создается с помощью файла Microsoft.Net.Compilers props из папки build в пакете microsoft.net.compilers nuget. И это механизм nuget , который может выполнять некоторые операции в файле xxx.csproj при установке пакета nuget.

Однако , этот файл также особенный и при изменении пути ссылки на nuget. Поскольку nuget включил новый механизм адресации, во время процесса удаления старый адрес Microsoft.Net.Compilers.props все еще не распознается, поэтому его нельзя удалить. На самом деле , когда вы запускаете пакет переустановки nuget, в файле xxx.csproj создается новый адрес. Смотрите это:

enter image description here

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

0 голосов
/ 31 марта 2020

Параметр Visual Studio для изменения ссылок пакета Nuget

  • В Visual Studio Tools => Диспетчер пакетов Nuget => Источники пакетов.
  • Вы можете изменить источники пакета здесь.
...