[C#] Где ошибка CS0433 «Тип« X »уже существует как в A.dll, так и в B.dll?


Answers

Завершите работу w3svc и удалите все из c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\

добавленной

  • на Windows 7

    c:\Users\{username}\AppData\Local\Temp\Temporary ASP.NET Files\root\

  • на серверах IIS (64 бит) это также может произойти. Искать:

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root

    (замените v4.0.30319 на версию фреймворка, которую вы используете, если она более новая на вашем сервере)

Question

Когда я запускаю webapp из Visual Studio 2008 с пакетом обновления 1 с использованием внутреннего веб-сервера (не IIS), я получаю вышеупомянутую ошибку.

Полная ошибка (исходный файл Default.aspx.cs ):

Сообщение об ошибке компилятора: CS0433: Тип «WebApplication3.Site1» существует как в «c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ root \ aa563bcf \ 59deedc0 \ App_Web_site1.master.cdcab7d2. msgstr "

Предыдущее полное предупреждение:

Предупреждение: CS0436: тип «WebApplication3._Default» в «c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Временные файлы ASP.NET \ root \ aa563bcf \ 59deedc0 \ App_Web_default.aspx.cdcab7d2._tlkwdos.0. cs 'конфликтует с импортированным типом' WebApplication3._Default 'в' c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Временные файлы ASP.NET \ root \ aa563bcf \ 59deedc0 \ assembly \ dl3 \ 44c3a3cf \ e096e61c_6568ca01 \ WebApplication3 .DLL. Использование типа, определенного в 'c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Временные файлы ASP.NET \ root \ aa563bcf \ 59deedc0 \ App_Web_default.aspx.cdcab7d2._tlkwdos.0.cs.

Источник предупреждений указывает на промежуточный файл App_Web_default.aspx.cdcab7d2._tlkwdos.0.cs :

Line 162:    
Line 163:    [System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]
Line 164:    public class default_aspx : global::WebApplication3._Default, System.Web.IHttpHandler {
Line 165:        
Line 166:        private static bool @__initialized;

и мой вопрос: откуда это взялось?

Webapp (не сайт!) Имеет один Default.aspx и один Site1.Master , без зависимостей. Они почти пустые, с asp:Label на странице. Раньше этот webapp работал нормально. Когда я удаляю все ссылки в Default.aspx.cs мастеру, все идет хорошо. У мастера есть только код.

Это на самом деле один из многих небольших тестовых webapps, и мне было все равно. Но я не видел этого раньше, и теперь мне любопытно, что делать, а затем копировать код в новый проект (очищающее решение не помогает).

Примечание. Я прочитал этот пост и некоторые другие, они не применяются.




У меня была такая же проблема с двумя элементами управления ascx, имеющими одно и то же имя класса:

Control1: <% @ Control Language = "C #" ClassName = " myClassName " AutoEventWireup = "true ...> Control2: <% @ Control Language =" C # "ClassName =" myClassName "AutoEventWireup =" true ...>

Я исправил его, просто переименовав имя класса:

Control1: <% @ Control Language = "C #" ClassName = " myClassName1 " AutoEventWireup = "true ...> Control2: <% @ Control Language =" C # "ClassName =" myClassName2 "AutoEventWireup =" true ...>




перейдите в web.config

в <compilation add batch="false"

он должен решить проблему




Это также может произойти, если в вашем файле ASPX есть дублирующее тег.

Это приведет к ошибке ...

<%@ Register Src="Control1.ascx" TagName="Control1" TagPrefix="uc1" %>

<%@ Register Src="Control2.ascx" TagName="Control2" TagPrefix="uc1" %>

Вы можете исправить это, просто изменив второй «uc1» на «uc2»

Исправлена...

<%@ Register Src="Control1.ascx" TagName="Control1" TagPrefix="uc1" %>

<%@ Register Src="Control2.ascx" TagName="Control2" TagPrefix="uc2" %>



Супер быстрое и удобное исправление заключается в том, чтобы злоупотреблять невероятной Intellisense Visual Studio, временно ссылаясь на класс где-то.

Пример:

System.Runtime.CompilerServices.ExtensionAttribute x = null;

При создании или наведении курсора на строку вы можете увидеть следующую ошибку:

'System.Runtime.CompilerServices.ExtensionAttribute' существует как в 'C: \ Program Files \ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Core.dll'

Это говорит о двух источниках, вызвавших конфликт немедленно.

System.Core.dll - это DLL-файл, который вы хотите сохранить, поэтому удалите его.

Я нашел, что я сижу в каталоге bin , но может быть в другом месте проекта.

На самом деле это стоит иметь в виду, поскольку, поскольку каталог bin не может быть включен как часть набора изменений TFS, он может объяснить, почему проверка ваших изменений не решает проблему для других членов вашей команды ,




Я нашел другую причину: разные версии, используемые для значков в панели инструментов и ссылок в проекте. После вставки объектов в какой-то форме ошибка началась.




Я закончил тем, что меняю способ ссылки на MasterType на странице.

Я изменил: <%@ MasterType VirtualPath="~/x/y/MyMaster.Master" %> до <%@ MasterType TypeName="FullyQualifiedNamespace.MyMaster" %>

Подробнее см. Здесь .

Надеюсь, это поможет кому-то.




Это может произойти, если вы поместите файлы .cs в App_Code и измените их действие сборки для компиляции в проекте веб-приложения.

Либо выполните действие сборки для файлов .cs в App_Code как Содержимое, либо измените имя App_Code на другое. Я изменил имя, так как intellisense не будет исправлять файлы .cs, помеченные как содержимое.

Дополнительная информация на http://vishaljoshi.blogspot.se/2009/07/appcode-folder-doesnt-work-with-web.html




В нашем случае причиной была разница в версиях .dll для сайтов в IIS. Они размещаются друг под другом в IIS, позволяя вам получить доступ к другому через субдомен. Он наследует от первого web.config и комбинирует его со следующим web.config, он не работает, имея разные версии mvc.dll.




Это может произойти, если одно и то же имя класса указано в нескольких файлах .aspx.cs , т. .aspx.cs Когда две страницы создаются с другим именем файла, но по ошибке имеют одно и то же имя класса.

// file a.aspx
public partial class Test1: System.Web.UI.Page

// file b.aspx
public partial class Test1: System.Web.UI.Page

При создании веб-приложения это дает предупреждение, но приложение запускается, однако, после публикации приложения больше не работает и выдает исключение, как указано в вопросе OP.

Убедитесь, что два класса не перекрывают проблему.