Ошибка ASP.Net: «Тип« foo »существует в файлах« temp1.dll »и« temp2.dll » - PullRequest
107 голосов
/ 16 декабря 2008

При запуске проекта веб-приложения в случайное время на странице может произойти сбой с ошибкой CS0433: тип существует в нескольких DLL. Все DLL являются сгенерированными DLL, находящимися в каталоге «Temporary ASP.NET Files».

Ответы [ 24 ]

130 голосов
/ 16 декабря 2008

Добавьте атрибут batch = "false" в элемент "compilation" файла web.config.

Эта проблема возникает из-за того, что ASP.NET 2.0 использует ссылки приложения и структуру папок приложения для компиляции приложения. Если для свойства пакета элемента в файле web.config для приложения установлено значение true, ASP.NET 2.0 компилирует каждую папку в приложении в отдельную сборку.

http://www.sellsbrothers.com/1995

http://support.microsoft.com/kb/919284

21 голосов
/ 26 августа 2013

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

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

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

11 голосов
/ 20 апреля 2012

Одной из возможных причин этой ошибки является то, что есть 2 страницы aspx с одинаковыми именами в inherits= в строке <@page language=......inherits=>.

Изменение имени inherits= устраняет ошибку.

8 голосов
/ 16 февраля 2016

На тот случай, если кто-то еще поделится моей проблемой, я получил эту ошибку при попытке опубликовать веб-сайт недавно разветвленного проекта, сборка работала отлично.

Оказывается, я забыл снять флажок для "Разрешить обновление скомпилированного сайта" в разделе Опубликовать настройки -> Настроить прекомпиляцию .

4 голосов
/ 03 апреля 2009

Как еще одна точка данных, у меня была эта проблема без каких-либо свидетельств циклических ссылок, как описано в ссылках в ответе Бена. Создание проекта моего веб-сайта завершится неудачей с некоторыми из этих ошибок, и установка compilation batch="false" исправит его, но я не хотел идти по этому пути, поскольку это большой производственный веб-сайт.

Это решение находилось в подпапке моей папки D: \ svn, которую я сопоставил с S :. Когда я открыл решение из S :, произошли эти ошибки, но если я пошел прямо в D: \ svn и открыл решение, ошибок не было.

Я также заметил, что, несмотря на наличие compilation batch="true" в моем web.config, при открытии решения с подключенного диска S: все мои файлы .ascx компилируются в свои собственные сборки. Если я открою его из физического расположения, файлы .ascx будут скомпилированы в сборки соответствующих папок (именно так должна работать batch="true").

Странно.

4 голосов
/ 30 августа 2011

Эта ошибка произошла из-за конфликта между именем класса веб-формы и заглушкой wsdl (код файла .cs), имеющей то же имя класса, т.е.

Страница ASPX: панель инструментов Класс: приборная панель класса partiacl

AppCode / APIServices.cs: публичный частичный класс Dashboard

Ошибка воспроизводилась только при публикации веб-сайта, но при сборке и отладке не сообщалось об ошибке.

3 голосов
/ 07 марта 2013

В моем случае удаление всех выходных сборок из папок bin во всех проектах в решении решило проблему. К сожалению, у меня нет объяснения этому.

2 голосов
/ 05 января 2015

Ни один из этих ответов не помог мне, но я решил проблему. Поскольку я использовал функцию публикации VS для развертывания веб-приложения, я выбрал опцию удалить все существующие файлы до публикации в мастере публикации в Интернете. Это заставило чистую копию приложения, и оттуда все работало нормально.

Это решение может быть полезно, если ваша локальная отладочная копия работает нормально, а опубликованная система - нет. Также замечательно, если вы не хотите тратить время на поиск отдельных DLL-файлов для удаления и не возражаете против производственных файлов, удаляемых в первую очередь.

2 голосов
/ 10 июля 2012

В моем случае я переименовал проект, поэтому dll также была переименована. Когда я просто скопировал новую DLL, но не думал удалить старую с сервера, у меня вскоре появилась пара классов с одинаковыми именами. Удаление устаревших библиотек делало свое дело (причины).

1 голос
/ 15 мая 2012

Эта проблема возникла, когда часть страницы aspx помещалась в отдельный пользовательский элемент управления. На моей машине все было нормально, на сервере появилась ошибка.

Переименованы класс проблемы и файл.

http://support.microsoft.com/kb/919284 Метод 2: Изменение порядка папок в приложении, которое пишет о возможных циклических ссылках

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...