Неправильное наследование ASP.NET публикуется в .NET 3.5, но не в 4.0? - PullRequest
1 голос
/ 23 февраля 2012

Я перенес свой проект ASP.NET с 3.5 на 4.0 (с VS2008 на VS2010), и при попытке публикации сайта я столкнулся с этой ошибкой:

Тип 'TYPE' существует в обоих 'c: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Файлы ... \ App_Web_1z57x8dg.dll 'и 'c: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Файлы ... \ App_Web_ofaxwney.dll '

Однако, когда я вернулся к своему проекту .NET 3.5 / VS2008, его можно было без проблем опубликовать. Я нашел несколько вопросов SO со схожими проблемами, в частности это было очень информативным. Я сделал опцию batch="false", но все еще столкнулся с проблемой.

Должна быть проблема с круговой ссылкой сортов. Возвращаясь к проекту .NET 4.0, я начал более внимательно изучать ошибки и обнаружил много таких вещей:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ViewPresentationTabControl.ascx.cs" Inherits="Common_UserControls_PresentationTabControl" %>

Если присмотреться, тег Inherits указывает на неправильный элемент управления. Это было жертвой копирования и вставки кода (любезно предоставлено оффшорным подрядчиком, от которого мы унаследовали этот проект).

Я прошел все ошибки и исправил очевидную ошибку, и проект был опубликован в .NET 4.0 / VS2010.

Цель этого длинного поста в том, почему 3.5 позволяет этому случиться, а не 4.0? Кажется, что-то подобное вызовет серьезную проблему в любой версии, но, очевидно, это не так.

Любая информация будет принята с благодарностью.

1 Ответ

1 голос
/ 23 февраля 2012
iisreset 

, а затем удалите все из

Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files

вы можете очистить его для каждой версии фреймворка, установленного на вашей машине v3.0, v3.5, v4.0 и т. Д.

затем попробуйте переиздать веб-сайт. Если это не сработает, вам нужно просмотреть каждый файл кода в веб-проекте и проверить правильность пространств имен.

Если вы посмотрите на содержимое файлов \ Temporary ASP.NET Files \ [projectname] \ * .cs, вы обнаружите магию, лежащую в основе механизма генерации кода страницы asp.net.

Возможной причиной в вашем случае является различие в подходе к сборке: 4.0 по какой-то причине собирает весь контент сайта в одну большую сборку application.dll, поэтому при сборке появляются неправильные наследования. Ранее сборка происходила для каждой страницы, и одна страница была скомпилирована в одну сборку. Чтобы избежать этого, я обычно создаю пакеты .msi для установки веб-сайта, которые принудительно собирали полный веб-сайт перед упаковкой, и все эти ошибки появлялись во время сборки

...