Если мне придется вручную заменить элементы (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
создается новый адрес. Смотрите это:
Так что вам просто нужно удалить дубликаты файлов со старого адреса.