2013-12-05 2 views
19

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

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 

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

+0

Возможный дубликат [Что элемент web.config компиляции/сборки делать?] (Https://stackoverflow.com/questions/16675171/what-does-the-web-config-compilation-assemblies-element -do) –

ответ

28

проверить web.config:

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

Первый фрагмент дал мне ошибку анализатора, добавленный в мой Index.cshtml. Является ли это синтаксисом Razor? Он работает со вторым фрагментом, но без первого. –

+0

@jamesj опечатка # вместо%, но я не бритвенный гуру ... я не был уверен в этом ... – giammin

+0

Хорошо, все равно работает без него. Спасибо :) –

4

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

+0

Я добавил, затем удалил 'System.Collections.Immutable.dll' и начал получение ошибки. После удаления из bin ошибка исчезла. – RMalke

2

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

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

  1. выгрузить проект unloading a VS project
  2. Редактировать проект
    editing a project
  3. Поиск «портативный» found an unexpected portable library
  4. Найдя Humanizer, я изменил его на версию до версии PCL 1.37.7, повторил проверку страницы и обнаружил, что все работает снова.

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

  1. Cap хьюманайзер NuGet в версии 1.xy, чтобы не использовать новую PCL библиотеки в v2 через allowedVersions атрибут в packages.config:
    <package id="Humanizer " version="1.37.7" allowedVersions="[1,2)" />
  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>
+0

Благодарим вас за это. – TimS

Смежные вопросы