Согласно журналу сборки, который был получен от @Stella, это сообщение об ошибке должно быть вызвано восстановленным путем пакета.
Во-первых, все успешно восстанавливает соответствующий пакет с помощью задачи Nuget restore
.А также, все необходимые пакеты были восстановлены.Расположение восстановленной папки: D:\a\1\s\webapp\Websites\packages
, что совпадает с местоположением, определенным в Nuget.config ..\packages
. В журнале Visual Studio Build
появляется следующее сообщение:
Considered "..\ThirdParty\NuGetPackages\EntityFramework.6.1.2\lib\net45\EntityFramework.dll", but it didn't exist.
***
***
Considered "..\ThirdParty\NuGetPackages\EntityFramework.6.1.2\lib\net45\EntityFramework.SqlServer.dll", but it didn't exist.
***
***
***
СогласноЭтим сообщением, которое отображается в задаче Visual Studio Build, вы можете увидеть, что он находит расположение пакета в папке с именем ..\ThirdParty\NuGetPackages
.Как обычно, этот путь контролируется <HintPath>... </HintPath>
.
. Теперь было бы очень легко узнать, что вызвало ошибку: местоположение пакета, найденное во время сборки, не совпадает с его фактически восстановленным местоположением пакета вNuget restore
task.
Как обычно, его местоположение по умолчанию должно быть ..\packages\...
, что совпадает с местоположением по умолчанию, определенным в Nuget.config
.Я предполагаю, что его локальный путь к репо должен быть когда-либо изменен, тогда его HintPath
, определенный в файле csproj
, также будет изменен автоматически.Но в Nuget.config расположение его пакета по умолчанию все еще остается по умолчанию.Это приведет к тому, что при восстановлении пакета оно будет следовать расположению, определенному в Nuget.config
.Но во время сборки, так как он ищет пакет с определенным csproj
..., сборка не может знать фактическое расположение восстановленного пакета.Затем вызвало эти сообщения об ошибке.
Для решения этой проблемы есть 2 решения.
- Переустановите пакеты в Visual Studio
ЗапуститеКоманда ниже переустанавливает все пакеты , таким образом, HintPath
может быть заменен на местоположение по умолчанию ..\packages\...
, которое может синхронизироваться с определенным в Nuget.config.
Update-Package -reinstall
Эта логикаэтого решения отозвать HintPath
в качестве местоположения по умолчанию, таким образом, оно может синхронизироваться с определением в Nuget.config
.
После выполнения команды HintPath
должен выглядеть так:
- Изменить
Nuget.config
file
Логика второго решения: изменить определение местоположения пакета в Nuget.config
файле.Сделайте синхронизацию с HintPath
, в это время местоположение восстановленного пакета будет таким же, как и местоположение пакета во время сборки.
Добавьте следующий файл в файл Nuget.config:
<configuration>
<config>
<add key="repositoryPath" value="xxxx" />
</config>
...
</configuration>
Просто попробуйте с одним решением, а затем встроить в Visual Studio локально.После того, как это будет успешно выполнено, вставьте его в Azure Devops и выполните сборку с такой же конфигурацией задач: use nuget
, nuget restore
, VS build
, publish artifacts
.
Надеюсь, это поможет.