Сбой сборки Visual Studio Online с отсутствующей dll System.Web.Http

Я успешно развертывал веб-сайт на основе ASP.Net MVC на базе Azure через конвейер сборки Visual Studio Online в течение нескольких недель. Затем я добавил класс ApiController, а Visual Studio установила несколько связанных пакетов NuGet. Теперь, когда я регистрируюсь и начинается сборка, у меня возникают сбои из-за отсутствия dll System.Web.Http.

Я попытался переустановить пакет NuGet, а также пометил отсутствующие библиотеки DLL как «Копировать локально». По-прежнему никакой радости.

На этапе сборки сначала отображается предупреждение:

C: \ Program Files (x86) \ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets (1819, 5) Не удалось разрешить эту ссылку. Не удалось найти сборку «System.Web.Http, Version = 5.2.3.0, Culture = нейтральный, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL». Убедитесь, что сборка существует на диске. Если эта ссылка требуется для вашего кода, вы можете получить ошибки компиляции.

Затем он сообщает о ряде ошибок и дает сбой:

[Имя решения] [Имя веб-сайта] \ App_Start \ WebApiConfig.cs (1, 18) Тип или имя пространства имен «Http» не существует в пространстве имен «System.Web» (отсутствует ссылка на сборку?)

Я использую Visual Studio 2015 RC и .Net 4.6 (хотя при переходе к v4.5.2 все еще возникает ошибка).

А пока мне нужно опубликовать это вручную. У кого-нибудь есть идеи, пожалуйста?


person Chris Arnold    schedule 09.10.2015    source источник
comment
Проведя небольшое исследование, я теперь вижу, что команда восстановления NuGet.exe игнорирует некоторые пакеты, перечисленные в файле packages.config. Зачем ему это делать?   -  person Chris Arnold    schedule 09.10.2015
comment
Когда вы создаете его локально в Visual Studio, это .DLL в папке bin для System.Web.Http?   -  person Luke    schedule 09.10.2015
comment
@ChrisArnold, вы используете сборку vNext? Если да, проверьте мой ответ ниже.   -  person Vicky - MSFT    schedule 10.10.2015


Ответы (2)


Во-первых, убедитесь, что в файле .proj можно найти следующее:

<Reference Include="System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>
  <Private>True</Private>
</Reference>

Во-вторых, установите флажок Восстановить пакеты NuGet на этапе сборки Visual Studio. (Предполагая, что вы используете сборку vNext)  введите описание изображения здесь

person Vicky - MSFT    schedule 10.10.2015
comment
Я удалил, а затем установил пакет Microsoft.AspNet.WebApi.Core, и он исправил путь подсказки в csproj. Спасибо - person ; 24.06.2016
comment
Этот параметр теперь не рекомендуется, вместо этого используйте задачу сборки NuGet Restore. - person Chris Pickford; 09.01.2017

Я обнаружил, что Visual Studio Online искала ссылку на пакет nuget из репозитория исходного кода. Я смог обойти эти ошибки, проверив недостающие библиотеки DLL.

Например:

\ пакеты \ Microsoft.AspNet.WebApi.Core.5.2.3 \ lib \ net45 \ System.Web.Http.dll

person Gary Khong    schedule 01.05.2018