Подтвердить что ты не робот

Ошибка компиляции во время выполнения из Microsoft.AspNet.WebApi.HelpPage версии 4.0.30506

Я получаю следующую ошибку, когда я пытаюсь использовать версию 4.0.30506 (к сожалению, мы привязаны к этой версии ASP.NEt Web API на данный момент) пакета Microsoft.AspNet.WebApi.HelpPage nuget. Я использую Windows 7 и .NET 4.5.

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS0012: The type 'System.Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

Source Error:


Line 11: 
Line 12:     // Group APIs by controller
Line 13:     ILookup<string, ApiDescription> apiGroups = Model.ToLookup(api => api.ActionDescriptor.ControllerDescriptor.ControllerName);
Line 14: }
Line 15: 

enter image description here

Насколько я вижу, у меня есть все правильные ссылки для этого. Я попытался найти сборку System.Runtime, как она предлагает, но я не могу найти ее в своей системе. Я добавил использование операторов в начало Index.cshtml, но без каких-либо изменений.

@using System
@using System.Runtime

Любые предложения о том, что вызывает эту ошибку?

4b9b3361

Ответ 1

проверьте свой web.config:

<compilation debug="true" targetFramework="4.5">
    <assemblies>
        <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </assemblies>
</compilation>

Ответ 2

В моем случае эта ошибка исчезла, когда я удалил System.Collections.Immutable.dll из каталога Bin. Эта DLL из пакета NuGet и доступна только для платформ Win8, и я работал с Win7. Так что это тоже может помочь вам.

Ответ 3

Я столкнулся с этой ошибкой после обновления всех пакетов Nuget в проекте MVC 5,.NET 4.5.1 и благодаря сообщение Дмитрия Лялина обнаружил проблему, связанную с обновленным пакетом Nuget, который стал портативной библиотекой классов.

Для тех, кто любит копать, я понял преступника, выполнив следующее:

  • Выгрузить проект выгрузка проекта VS
  • Отредактируйте проект
    редактирование проекта
  • Поиск "портативный" найдена неожиданная переносимая библиотека
  • Найдя Humanizer, я изменил его на версию до версии PCL 1.37.7, повторно протестировал страницу и обнаружил, что все работает снова.

Зная виновника (ов), Humanizer в моем случае, есть два варианта:

  • Закройте Humanizer Nuget в версии 1.x.y, чтобы не использовать новые библиотеки PCL в v2 через атрибут allowedVersions в packages.config:
    <package id="Humanizer " version="1.37.7" allowedVersions="[1,2)" />
  • Сделайте то, что предлагает giammin в своем ответе, и добавьте сборку System.Runtime в файле system.web в web.config:
    <system.web><compilation ...><assemblies><add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /></assemblies></compilation></system.web>