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

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

Ответы [ 24 ]

1 голос
/ 19 декабря 2011

В моем случае проблема была решена, когда я отредактировал файл Designer.cs, который все еще имел дублированное имя класса. по какой-то причине, когда я переименовал класс "logout" в "logout2", в файле конструктора он не был автоматически изменен и все еще был "logout", и это имя класса уже существовало в предварительно скомпилированной dll в моем проекте в стороннее веб-приложение, с которым я работаю и разрабатываю).

1 голос
/ 03 мая 2017

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

1 голос
/ 16 марта 2016

Ни одно из этих решений не помогло мне. Обе мои конфликтующие библиотеки DLL находились в C: \ ... \ AppData \ ... \ Temporary ASP.NET Files \ ...

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

Я попытался удалить более новую DLL-библиотеку - которой вообще не должно было быть в старой кодовой базе - из расположения «Временные файлы ASP.NET», идентифицированного msbuild. msbuild просто положи обратно.

Я также попробовал настройку web.config, которую некоторые здесь успешно использовали, но она тоже не сработала. Хотя, когда я пишу это, я понимаю, что на самом деле в одном решении было два проекта MVC, и оба имели ошибки, поэтому проблема могла заключаться в том, что я не добавил параметр в оба.

Я попытался перекатить исходное репо, выполнить очистку, откат и очистку. Ничего.

Я попытался удалить все, что находится в папке «Temporary ASP.NET Files». msbuild просто верни его обратно.

Наконец, я попытался восстановить в Visual Studio. Хотя выходные данные командной строки и выходные данные «Ошибки» выдавали одну и ту же ошибку msbuild «Temporary ASP.NET Files», ошибка Intellisense - при наведении указателя мыши на конфликтующий тип - фактически жаловалась на библиотеки DLL в выходных каталогах. Видимо, «Чистый» и «Восстановить» не делали свою работу. Я вручную удалил библиотеки DLL из выходных каталогов, определенных Intellisense, и проблема была решена.

tl; dr - Убедитесь, что вы закрываете все свои web.configs с помощью пакетной настройки, и попробуйте использовать Intellisense для дальнейших подсказок.

1 голос
/ 31 марта 2016

Моя проблема была связана с .dll, которая генерировалась в папке моего проекта.

Если вы ссылаетесь на другой файл, вместо того, чтобы делать все, что вы видите выше, моя проблема мгновенно решалась просто удалением .dll, которая оставалась в моем каталоге / bin для моего проекта.

Проблема не обязательно является исправлением web.config - это круговая ссылка, которая должна быть решена. Я понял, что очистил старый .dll в моем исходном файле проекта, но не в проекте, который ссылался на него.

Я не рекомендую вносить изменения в ваш файл web.config, потому что это всего лишь бинты, а не решение реальной проблемы. Сделайте это, если вам не хочется решать проблему, но если вы хотите избежать головной боли в будущем, просто удалите DLL из обоих мест.

0 голосов
/ 28 мая 2016

Папка App_Code вызывает проблему, поместите класс вне папки (Работает нормально)

Папка App_Code не предназначена для проектов веб-приложений

http://vishaljoshi.blogspot.in/2009/07/appcode-folder-doesnt-work-with-web.html

0 голосов
/ 06 марта 2013

Иногда это может помочь удалить решение и создать его заново. Поскольку такое использование происходит при преобразовании из VS2005 в vs2010, некоторые ссылки на Framework 4.0 (после обновления) остаются в решении, даже все проекты определены как 3.5.

Обычно восстановление решения должно устранить эти проблемы.

0 голосов
/ 07 июля 2015

Размещение моего решения:

Проблема была связана с «Сканированием при доступе» антивируса Mcafee. Отключение этого решило проблему. Почему-то ASP временная папка не использовалась должным образом ASP, когда антивирус был включен.

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

0 голосов
/ 11 марта 2015

Если библиотеки DLL отображаются во временной папке, попробуйте очистить решение.

0 голосов
/ 27 июля 2013

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

В моем контроллере был простой статический код, поэтому я изменил свой ascx:

 <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="controllerName.ascx.cs" Inherits="Controls.controllerName" %>

К

 <%@ Control Language="C#" AutoEventWireup="true" Src="controllerName.ascx.cs" Inherits="Controls.controllerName" %>

Также удалил частичное ключевое слово из codebehind и добавил пространство имен в codebehind.

Это:

using System;
using System.Web.UI;

/// <summary>
/// My controller
/// </summary>
public partial class controllerName: UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
}

К этому:

using System;
using System.Web.UI;

namespace Controles
{
    /// <summary>
    /// My controller
    /// </summary>
    public class controllerName : UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }
}

И это сработало для меня.

0 голосов
/ 23 июня 2016

Перейти к Добавить ссылку и искать как DLL, Обе библиотеки DLL проверили бы, снимите галочку с одной из библиотек DLL, поскольку генерируются ссылки на одну и ту же библиотеку DLL с разными версиями.

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