У нас есть старое ASP.NET MVC 3 Web Application, созданное в VS2010, которое не скомпилируется с момента обновления безопасности на прошлой неделе.
Проблема в том, что ссылка на System.Web.Mvc.dll не работает.
Когда я открываю файл решения на нашей машине сборки, где обновление безопасности не запускалось, и откройте диалоговое окно свойств для ссылок → System.Web.MVC, это выглядит просто отлично.
Путь - C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll Версия 3.0.0.0
Но когда я открываю файл решения на dev-машине, где было выполнено обновление безопасности, ссылки → System.Web.MVC отмечены как отсутствующие. Если я удалю его и попытаюсь добавить его обратно, используя ссылку VS2010 Add Reference, он не будет отображаться.
Блуждание по сети привело меня к предложениям, связанным с обновлением MVC с использованием NuGet. Мы не использовали NuGet в наших проектах VS2010, так что это не кажется совершенно правильным, для этой ситуации. Я все равно попробовал, и у меня получилось полдюжины отсутствующих ссылок.
Когда я смотрю на свойства для "C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll" в Проводнике Windows, на машине сборки я вижу версию 3.0.0.0.
Когда я смотрю на свойства на машине dev, я вижу версию 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>
Попробовал снова и получил те же предупреждения.
Мой вопрос: у меня все еще есть проблема? Или я разрешу это, несмотря на предупреждения?