2012-02-23 1 views
1

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

The type 'TYPE' exists in both 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files...\App_Web_1z57x8dg.dll' and 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files...\App_Web_ofaxwney.dll'

Однако, когда я вернулся к моему .NET 3.5/VS2008 проект был доступен для публикации без проблем. Я нашел несколько вопросов SO с подобными проблемами, в частности this был очень информативным. Я сделал опцию 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
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.

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

+0

Спасибо за ввод, однако я исправил проблему, посмотрев все местоположения где тег «Inherit» указывал на другой файл. Здесь возникает вопрос, почему .NET 3.5 разрешил его опубликовать, а не 4.0. Был ли мой вопрос недостаточно ясным? Пожалуйста, дайте мне знать, чтобы я мог исправить это, чтобы избежать путаницы. –

+1

oops. не читал до конца :) Differnce in build approach 4.0 по какой-то причине строит весь контент сайта в одной большой сборке application.dll, поэтому во время сборки всплывают неправильные наследования. ранее сборка выполнялась на каждой странице, и одна страница была скомпилирована в одну сборку. Чтобы этого избежать, я обычно создаю пакеты .msi для установки веб-сайта, которые принудительно завершают сборку полного веб-сайта перед упаковкой, и все эти ошибки всплывали во время сборки. – b0rg

+0

Интересно. Спасибо за ваш отзыв! Вы должны добавить эту информацию в свой ответ, чтобы я мог принять ее как официальный ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^