Почему я получаю сообщение «Не удается найти один или несколько типов, необходимых для компиляции динамического выражения»? - PullRequest
61 голосов
/ 19 августа 2011

У меня был проект, который я обновил с

  • .NET 3.5 MVC v2 до
  • .NET 4.0 MVC v3

Компиляция Я получаю сообщение об ошибке при попытке использовать или установить свойство @ViewBag.Title.

Один или несколько типов, необходимых для компиляции динамического выражения, не найдены. Вам не хватает ссылок на Microsoft.CSharp.dll и System.Core.dll?

Я сделал следующее

  1. Выполнено шагов обновления
  2. Установите целевую платформу на вкладке Проект / Свойства / Приложение на .NET Framwework 4
  3. Добавлен System.Core framework вручную
  4. Добавлен Microsoft.CSharp framework
  5. Добавлен System.Xml framework
  6. Добавлен System.Xml.Linq framework
  7. Убедитесь, что мой Web.Config правильный (перезаписывается Web.Debug.Config и т. Д.)
  8. Создан модель , контроллер и Razor View
  9. Создать __Layout.cshtml_

Я в растерянности относительно того, что еще делать?

EDIT:

Я заметил, что в GAC Gui есть System.Core 3.5.0.0, но нет System.Core 4.0.0.0. Значит ли это, что он запутался и все еще использует предыдущую версию? Или я неправильно понимаю GAC?

EDIT:

Мой web.config выглядит следующим образом

...
<compilation debug="true">
    <assemblies>
        <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    </assemblies>
</compilation>
....
<pages>
    <controls>
    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</controls>
<namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.WebPages"/>
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
    <add namespace="System.Linq" />
    <add namespace="System.Collections.Generic" />
</namespaces>
</pages>
....

Ответы [ 21 ]

0 голосов
/ 08 сентября 2015

Я боролся с этой проблемой в течение нескольких дней и наконец понял ее.

Все, что я сделал, это удалил из web.config следующее:

<dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Razor" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...