У меня есть проект ASP.NET MVC4, который прекрасно компилируется в VS2010. Для развертывания я запускаю сценарий Nant, который пытается скомпилировать веб-сайт с помощью aspnet_compiler.exe, но я постоянно сталкиваюсь с проблемой ссылки на сборку с System.Web.WebPage
ошибка CS1705: Assembly 'System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' использует 'System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35', которая имеет более высокую версию, чем ссылающаяся сборка 'System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
Кроме того, в web.config у меня есть следующие привязки сборок:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
и мой csproj имеет следующую ссылку:
<Reference Include="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<Private>True</Private>
<HintPath>..\packages\AspNetWebPages.Core.2.0.20126.16343\lib\net40\System.Web.WebPages.dll</HintPath>
</Reference>
Я решил эту проблему, явно указав ссылку на сборку 2.0 в Web.config. Я полагаю, что по какой-то причине компилятор ASP.NET (в моем случае при запуске MvcBuildViews
) использует сначала старую сборку 1.0, если она найдена.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- … -->
<system.web>
<!-- … -->
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
<add assembly="System.Web.Abstractions, Version=4.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=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
</assemblies>
</compilation>
<!-- … -->
</system.web>
<!-- … -->
</configuration>
BTW: Похоже, что впервые эта проблема возникла после того, как я добавил сторонний компонент ASP.NET MVC 3.0. Этот компонент прекрасно работает через привязку к сборке, но, возможно, именно из-за него компилятор ASP.NET пытается загрузить сначала веб-страницы версии 1.0.
У нас была аналогичная проблема.
Мы используем Visual Studio 2012 для разработки, и когда мы преобразовали проект 2010 в 2012 и попытались развернуть его, ASP.NET потребовал 2.0.0.0 вместо 1.0.0.0.
После некоторого расследования я увидел, что проект не ссылается на определенную версию System.Web.WebPages, поэтому после обновления до VS 2012 он нашел версию 2.0.0.0.
Если удалить ссылку из проекта, а затем заново добавить конкретную версию из GAC, то все работает корректно.
Для нас, проблема была старая копия соответствующей DLL в папке _bin_deployableAssemblies
. Удаление это у нас правильно настроены с версией 2.0.
Я сталкивалась с этой проблемой при обновлении сайта с MVC 3 для 5.2.3.0.
Мой вопрос был ТФС не добавляя пакеты и связанных DLL's от установки NuGet для.
Я вручную добавил следующие папки в папке packages решение.
Майкрософт.Паш.Бритвы.3.2.3 Майкрософт.Паш.Веб-страницы.3.2.3
Майкрософт.Веб.Инфраструктура.1.0.0.0
Один раз устроила сборка сервера больше не было проблемой.
Эта ошибка также возникает у меня, когда MvcBuildViews
установлен в true.
Я заметил, что всегда получал эту ошибку при сборке всего решения с помощью 'Build Solution'. При этом, если я сразу же собирал проект MVC самостоятельно (щелчок правой кнопкой мыши на проекте, затем Build), то проект MVC собирался успешно.
Похоже, что самостоятельная сборка проекта MVC будет успешной до тех пор, пока она не вызовет сборку зависимых проектов (т.е. они актуальны). Но сборка с помощью 'Build Solution' всегда заканчивается с этой ошибкой.
Я почесал голову, на некоторое время над этой проблемой, когда у меня был он. В конце концов я заметил, что у меня в следующем разделе в "Время" в раздел Мой веб.конфиг.
<runtime>
. . .
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
. . .
</runtime>
Как вы можете видеть, это относится к версии 2 ассамблеи, которая не'т соответствовать следующий код, который также есть в системе.веб/компиляции/сборки раздел веб.конфиг.
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Фактический сборки в References проекта действительно В1.0.0.0, поэтому я изменил первый кусок кода выше, чтобы следующий, который зафиксировал проблему немедленно. Я'м не знаете, как ошибку, там в первую очередь.
<runtime>
. . .
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" />
</dependentAssembly>
. . .
</runtime>
Для меня этот вопрос был скорее всего вызван приобрести обновление до последней версии .Продажи через установщик веб-платформы, но у меня не последняя версия ASP.NET в MVC установлен. Обновление через установщик веб-платформы исправлены проблемы.
просто зайдите на ссылки и поисковые системы.Веб.Версия в MVC 4.0 или более и добавить его. Я просто добавить ссылку на систему.веб.в MVC 4.0.0.1 и он работает.
Дон'т забудьте удалить старую версию аварии.
В таком случае, это's стоит делать 'найти в файлах' по всем файлам в вашем решении's в корневой папке.
Для примера выше, я'd еще искали: система.Веб.Веб-Страниц, Версия=1.0.0.0
Таким образом, вы можете избавиться от всех ссылок на старые версии.