У нас есть старое веб-приложение ASP.NET MVC 3, построенное на VS2010, которое не компилируется после обновления безопасности на прошлой неделе.
Проблема в том, что ссылка на System.Web.Mvc.dll не работает.
Когда я открываю файл решения на нашей машине сборки, на которой не запущено обновление безопасности, и открываю диалоговое окно свойств для References-> System.Web.MVC, все выглядит нормально.
Путь: C: \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll Версия 3.0.0.0
Но когда я открываю файл решения на машине разработчика, на которой было запущено обновление безопасности, References-> System.Web.MVC помечается как отсутствующий. Если я удалю его и попытаюсь добавить обратно с помощью диалогового окна «Добавить ссылку» VS2010, он не отобразится.
Блуждание по сети привело меня к предложениям, связанным с обновлением MVC с помощью NuGet. Мы не использовали NuGet в наших проектах VS2010, поэтому в данной ситуации это кажется не совсем правильным. Я все равно попробовал, и в итоге получил полдюжины пропущенных ссылок.
Когда я смотрю на свойства «C: \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll» в проводнике Windows, на машине сборки я вижу версию 3.0.0.0.
Когда я смотрю на свойства на машине разработчика, я вижу версию 3.0.50813.1.
Мне нужен способ изменить способ сборки и запуска, чтобы я мог создавать и запускать независимо от того, какая из этих двух библиотек DLL установлена в платформе .NET 3.0.
Идеи?
То, что я пробовал, не сработало
Первая попытка - если сборка отсутствует, добавьте ее. Я удалил старую отсутствующую ссылку. Затем я скопировал DLL из папки «ASP.NET MVC3 \ Assemblies» в папку в моем проекте. Установите для него значение «Всегда копировать» и добавьте его как ссылку.
При этом проект будет компилироваться в VS2010, но когда я пытался предварительно скомпилировать страницы с помощью aspnet_compiler, я получал предупреждения:
(0): warning CS1702: Assuming assembly reference 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' matches 'System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35', you may need to supply runtime policy
До сих пор мне удавалось избегать понимания политик времени выполнения, но я попытался добавить это в web.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.1" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Попробовал еще раз и получил те же предупреждения.
У меня вопрос - есть ли у меня проблема? Или я решу это, несмотря на предупреждения?