невозможно создать приложение asp.net в лазурных девопах - PullRequest
2 голосов
/ 20 сентября 2019

Может создавать приложение локально, но когда я пытаюсь встраивать в конвейер Azure Devops. Ниже показаны ошибки

Я установил EntityFramework и добавил сборку system.data.entity.design в файл webconfig. Нетудача

Пожалуйста, найдите конвейер здесь

Восстановление NuGet

webapp\CaseDatabase.DataAccess\CaseAssignmentModule\CaseQueueDbAdapter.cs(10,19): Error CS0234: The type or namespace name 'Entity' does not exist in the namespace 'System.Data' (are you missing an assembly reference?)
webapp\CaseDatabase.DataAccess\CaseAssignmentModule\HoursEstDbAdapter.cs(4,19): Error CS0234: The type or namespace name 'Entity' does not exist in the namespace 'System.Data' (are you missing an assembly reference?)
webapp\CaseDatabase.DataAccess\CasesModule\CaseWorkflowDbAdapter.cs(2,17): Error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)
webapp\CaseDatabase.DataAccess\ClientsAndContactsModule\ContactDefaultsDbAdapter.cs(5,17): Error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)
webapp\CaseDatabase.DataAccess\ClientsAndContactsModule\InstructionLibraryDbAdapter.cs(4,17): Error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)
webapp\CaseDatabase.DataAccess\DBEntityCoreModel\CaseDatabaseContext.cs(2,17): Error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)
webapp\CaseDatabase.DataAccess\DBEntityCoreModel\ICaseDatabaseContext.cs(2,17): Error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)
webapp\CaseDatabase.DataAccess\DBEntityCoreModel\ICaseDatabaseContext.cs(3,17): Error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)
webapp\CaseDatabase.DataAccess\DBEntityCoreModel\ICaseDatabaseContext.cs(4,17): Error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)
webapp\CaseDatabase.DataAccess\EntityRepository.cs(4,17): Error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)

1 Ответ

2 голосов
/ 24 сентября 2019

Согласно журналу сборки, который был получен от @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 должен выглядеть так:

enter image description here

  • Изменить Nuget.configfile

Логика второго решения: изменить определение местоположения пакета в 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.

Надеюсь, это поможет.

...