У этой проблемы много решений, пожалуйста, прочитайте все ответы ниже, они также помогут вам решить вашу проблему. Если вы найдете новый способ решить эту проблему, пожалуйста, задокументируйте в своем ответе
Я пытаюсь добавить System.Web.Optimization в мое решение ASP.NET Web Forms. Я добавил Структуру веб-оптимизации Microsoft ASP.NET через пакеты NuGet. Он добавил Microsoft.Web.Infrastracture и WebGrease (1.5.2) ссылки.
Однако, когда я запускаю
<%= System.Web.Optimization.Scripts.Render("~/bundles/js")%>
Я получаю ошибку времени выполнения
Could not load file or assembly 'WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Я попытался добавить assemblyBinding в Web.Config
<runtime>
<legacyUnhandledExceptionPolicy enabled="1"/>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.5.1.25624" newVersion="1.5.2.14234"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
Но без везения.
Я заметил, что моя веб-конфигурация WebSite содержит эту строку
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
Если я заменил его на
<configuration>
Затем все работает, и я не получаю ошибку времени выполнения. К сожалению, мне нужен xmlns. Другие компоненты моего проекта зависят от него.
Почему оптимизация пытается загрузить более старую версию, когда схема указывает на v2.0? Есть ли способ заставить его загрузить последнюю или единственную доступную версию WebGrease.dll?
Что еще я могу попробовать, не меняя
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> ?
Спасибо за любую помощь, которую вы можете предоставить!
Изменить: 1) Прикрепление результата FusionLog. Может быть, это будет полезно
=== Pre-bind state information ===
LOG: User = [USER]
LOG: DisplayName = WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35
(Fully-specified)
LOG: Appbase = file:///C:/Projects/PROJECT_NAME/trunk/www.PROJECT_NAME.com/
LOG: Initial PrivatePath = C:\Projects\PROJECT_NAME\trunk\www.PROJECT_NAME.com\bin
Calling assembly : System.Web.Optimization, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Projects\PROJECT_NAME\trunk\www.PROJECT_NAME.com\web.config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35
2) Подтверждено, проблема в
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
Однако я не понимаю, почему