"Не удалось загрузить тип [Пространство имен]. Глобальное", вызывающее у меня горе
В моем приложении .Net 2.0 Asp.net WebForms у меня есть мой Global.asax, содержащий следующий код:
<%@ Application CodeBehind="Global.asax.cs" Inherits="MyNamespace.Global" Language="C#" %>
Однако при построении я получаю сообщение об ошибке -
Не удалось загрузить тип 'MyNamespace.Global'.
Это похоже на то, что пространство имен MyNamespace (определенное в коде за файлом Global.asax.cs) не рассматривается компилятором в файле Global.asax(не отображается в R # intellisence..).
Это оказалось очень твердым орешком, чтобы взломать... любая помощь будет оценена!
Примечание. Global.asax и Global.asax.cs находятся в одной папке.
Примечание2: При компиляции из приглашения vs с помощью csc она компилирует o.k.
Ответы
Ответ 1
Одна из ситуаций, с которой я столкнулся, вызвала эту проблему, когда вы указываете платформу для сборки через "Конфигурация сборки".
Если вы укажете x86 как свою платформу сборки, visual studio автоматически назначит bin/x86/Debug в качестве вашего выходного каталога для этого проекта. Это совершенно справедливо для других типов проектов, за исключением веб-приложений, в которых ASP.NET ожидает, что сборки будут выводиться в папку Bin.
В моей ситуации я обнаружил, что они выводятся на оба (Bin and Bin/x86/Debug), за исключением того, что некоторые из DLL и необъяснимо самые важные из них - это ваши веб-приложения dll, которые отсутствуют из папки Bin.
Это, очевидно, вызвало проблему компиляции и, следовательно, исключение "Не удалось загрузить тип Global". Очистка решения и удаление сборок не повлияли на последующие сборки. Мое решение состояло в том, чтобы просто изменить выходной путь в настройках проекта для веб-приложения на Bin (а не bin/x86/Debug).
Ответ 2
Вы изменили пространство имен вашего проекта? Я видел это иногда, когда я изменил пространство имен в диалоговом окне "Свойства проекта", но Visual Studio не изменил объявление namespace
в существующих файлах кода.
Ответ 3
Я новичок в asp.net development, и я столкнулся с аналогичной проблемой.
Я обновил класс как класс partial
, и он отлично работал.
public partial class Global : System.Web.HttpApplication
Ответ 4
Я перезапустил Visual Studio, и ошибка исчезла!
Ответ 5
Вот еще один для книг. Похоже, это происходит, когда вы запускаете более одного веб-приложения из одного и того же номера порта.
В принципе, у меня есть несколько ветвей, с которыми я работаю, у меня есть основная ветка и промежуточная ветка и ветвь релиза. Когда я переключил ветвь на промежуточную ветвь, я заметил, что она использует ту же конфигурацию адресов портов, поэтому я решил изменить ее. Затем я получил еще одно предупреждение о том, что эта резервная копия конфликтует с другим настроенным приложением. Сервер IIS Express чувствителен к этому, и по какой-либо причине он блокирует конфигурацию.
Просто выбрав третий незатронутый порт, эта проблема исчезла, потому что затем отображает порт в новое сопоставление каталога (мои ветки расположены по-разному на диске). Я заметил это, потому что я попытался изменить имя типа, на которое указывает Global.asax
, но имя типа не изменилось даже после перезапуска сервера, так что код, который я изменял, не был отражен развертыванием IIS Express.
Итак, прежде чем вы потеряете слишком много сна, попробуйте изменить номер порта IIS, который в настоящее время используется для запуска веб-проекта.
Ответ 6
- Щелкните правой кнопкой мыши на Project Solution и выберите Batch Build.
- Затем выберите "Название проекта" и "Очистить и перестроить".
Работает отлично для меня В VS 2015. Теперь я могу использовать глобальное событие. Мой файл Global.asax
имеет эту строку
<%@ Application Language="C#" CodeBehind="~/App_Code/Global.asax.cs" Inherits="Global" %>
И я делаю файл класса Global.asax.cs
, который находится в папке AppCode
, которая выглядит как
public partial class Global : HttpApplication
{
public Global()
{
//
// TODO: Add constructor logic here
//
}
}
Я надеюсь, что это поможет
Ответ 7
Проверьте действие сборки Global.asax.cs. Он должен быть установлен в "Скомпилировать".
В обозревателе решений щелкните правой кнопкой мыши Global.asax.cs и выберите "Свойства". На панели "Свойства" установите действие "Построение" (не отлаживая).
Похоже, что VS 2008 не всегда правильно добавляет файлы .asax(.cs) по умолчанию.
Ответ 8
В моей ситуации это было связано с типом веб-сайта/веб-приложения проекта. Недавно мы переехали в MVC и должны были изменить его на веб-приложение.
Итак, решение было простым: выберите свой веб-сайт в обозревателе решений и удалите его из решения, затем щелкните правой кнопкой мыши по решению и выберите "Добавить" → "Существующий проект" (не веб-сайт)., перекомпилируйте веб-сайт.
Ответ 9
Старый пост, но я пробую эту ошибку при попытке конвертировать из проекта веб-сайта в проект веб-приложения.
Следуйте инструкциям этой Ссылка. Я все еще получил ошибку global.asax, но все, что я сделал, это удалить его и снова добавить обратно, щелкнув правой кнопкой мыши на проекте в визуальной студии и выбрав новый элемент. Добавьте файл global.asax, и он сработал.
Ответ 10
У меня возникла аналогичная ошибка при наличии
<clear/>
в качестве дочернего элемента (первого дочернего элемента)
<assemblies>
в моем Web.config. Я добавил теги в свой web.config, чтобы предотвратить наследование конфигурации в приложении, развернутом в разделе "Веб-сайт по умолчанию" в IIS.
Ответ 11
Я преобразовал свое решение из VS2003 в VS2010 и имел проблемы с преобразованием проекта веб-приложения.
Я испытал ту же самую проблему, и ни один из ответов не работал у меня.
Что для меня работало:
- Щелкните правой кнопкой мыши по решению и выберите Configuration Manager
- Посмотрите на каждую из конфигураций в раскрывающемся списке "Активная конфигурация решения".
- Включено веб-приложение в сборке, отметив флажок "Построить".
казалось бы, что проблемы, которые у меня были во время конверсии, по какой-то причине удалили проект веб-приложения из сборки.
Надеюсь, этот ответ поможет любому другому, у кого есть такая же проблема...
Ответ 12
Если вы перестраиваете или меняете проект и перемещаете файлы из старого, обязательно проверьте блок Inherit вашего глобального. В моем случае прежний проект/решение был назван интрасети, и я воссоздал его как интрасеть, но когда я переместил файлы, ему не понравился нижний регистр (duh). Просто сделайте общий обзор имен файлов.
Ответ 13
У меня были аналогичные проблемы, когда я получал эту ошибку в проекте.
"Could not load type [Namespace].Global
Error in Line 1 etc etc
Проведя некоторое время, я подозреваю, что функция с возможными ошибками в классе .later комментирует, что определенная функция моя проблема решена.
Я не знаю, почему Visual Studio не дала мне этой конкретной ошибки во время отладки. Но эта ошибка может возникнуть из-за некоторых ошибок в файле класса.
Ответ 14
Измените идентификатор GUID сборки. Это исправляет многие МНОГИЕ проблемы, которые я нашел.
Ответ 15
Никто из них не работал у меня, к сожалению. Исправление, которое я нашел, было более специфичным для разработки, в частности, отладки на вашей локальной машине. К сожалению, на самом деле это не совсем исправляет проблему так, как я надеялся, но если вы на своем конце, это может заставить вас работать снова.
TL; DR: В свойствах проекта на вкладке "Веб" в разделе "Серверы" выберите "Использовать локальный веб-сервер IIS". Адрес,
http://localhost/MyApp"
уже был заполнен (у меня IIS7,.NET 4.0). Первоначально был выбран "Использовать Visual Studio Development Server" с виртуальным путем "/"
Что действительно озадачивает меня, так это то, что ничего больше не работало, я просмотрел все предложения, которые я смог найти на SO, и ничего не получилось. Странно, что ошибка была (казалось бы, несколько месяцев назад), когда я добавил новый ascx файл, похожий на существующий, который был добавлен из старого проекта .net 2.0 (я думаю) что позволит настраивать пользовательское управление внутри приложения. Он работал, красиво, в течение длительного времени, пока я не попытался добавить этот новый файл. Добавив его и увидев ошибку, я сразу же вернул все изменения, но ошибка Global.ascx не исчезла, даже не сдула весь проект и не стала последней из исходных данных.
Ответ 16
Эта работа для меня:
Первое: кажется, что независимо от того, что вы сказали визуальной студии, идеал всегда смотрит файл в: bin (для веб-приложения и вне курса в моем случае) Итак, даже когда я сказал визуальной студии конкретный путь загрузки файл, идеал продолжает искать неправильный путь. Поэтому я меняю в: Build/Configuration Manager тип вывода на: Release (предыдущий я очищаю решение, даже вручную), поэтому, когда был создан файл .dll, я переместился вручную в папку "bin" в проекте/решении папка. Надеюсь, это будет полезно!
Ответ 17
Когда я столкнулся с этой проблемой совсем недавно, я попробовал все упомянутое здесь, но безрезультатно. После разрыва моих волос я решил попробовать удалить всю мою базу кода (да, довольно отчаянно!), А затем повторно загрузить все из своего репозитория кода. После этого все снова работало нормально.
Кажется предельным решением, но просто подумал, что я включу его здесь, поскольку он не упоминался ранее в этой теме.
(Обратите внимание, что в другое время, когда я столкнулся с этой проблемой, это когда Global.asax наследуется от компонента, который должен быть зарегистрирован на главной машине. Это отсутствовало, поэтому я получил эту же проблему).
TL; DR; Если все ответы в этом потоке не работают для вас, попробуйте удалить и повторно загрузить всю вашу базу кода!
Ответ 18
В моем случае, из-за моего целевого процессора (x64) я изменил его на x86, очистил проект, перезапустил VS (2012) и перестроил проект; тогда оно исчезло.
Ответ 19
Я сталкивался с этой проблемой несколько раз, и в каждом случае я перестраивал компьютер или переключился на новый компьютер. Мой первый шаг (помимо обновления машины и установки Visual Studio) заключается в том, чтобы вытащить мои проекты из Git и протестировать их.
Я ударяю эту ошибку каждый раз, потому что пытался ее получить до локального кода перед ее компиляцией. Видишь ли, у меня есть Git и Subversion, чтобы игнорировать мои папки bin/build, поэтому после вытаскивания из моего репозитория я забыл запустить сборку, которая вытаскивает необходимые пакеты из Nuget (так как у меня есть Git/SVN, игнорируйте их тоже ) и создает библиотеки DLL, необходимые для фактического запуска моего приложения.
Я сомневаюсь, что это решит большинство проблем, но я не видел его в списке потенциальных решений, поэтому я думал, что добавлю его.
Ответ 20
Я был озадачен тем же самым проклятым вопросом. Я попытался удалить и global.asax
(закрыл VS2010 перед добавлением). Очистил проект/решение, проверил любые изменения в конфигурации веб-приложения и другие материалы, которые работали для других людей здесь в потоках SO. Я, наконец, очистил решение, удалил папки bin/obj и остановил все запущенные серверы разработки VS2010, после чего вернул все изменения и нашел, что приложение работает снова. Я переделал то же самое, и теперь его работа прекрасна.
Случилось снова, и на этот раз этот работал у меня.
Ответ 21
перейдите в конфигурационный менеджер в свойствах вашего решения. Затем убедитесь, что все проекты и построены, и это не будет проблемой.
Ответ 22
Мне пришлось удалить (дублировать) файлы с диска, которые не были включены в проект. Похоже, дубликаты были вызваны неудачным переименованием. Имена файлов были разными, но один и тот же код.
После удаления всех файлов. * файлов, которые я смог проверить.
- foo.aspx
- foo.aspx.cs
- foo.aspx.designer.cs
- oof.aspx
- oof.aspx.cs
- oof.aspx.designer.cs
Ответ 23
в моем случае это был IISExpress, указывающий на тот же порт, что и IIS
для его решения перейдите к
C:\Users\Your-User-Name\Documents\IISExpress\config\applicationhost.config
и найдите порт, вы найдете тег <site>...</site>
, который нужно удалить или прокомментировать.
Ответ 24
В моем случае я добавил Global.asax в проект WCF, чтобы поэкспериментировать с ним, но решил удалить его. Я удалил его из Solution Explorer, но поскольку он все еще находился в папке, конвейер все еще находил его и вызывал эту ошибку.
Я удалил Global.ASAX и GLobal.asax.cs из файловой системы и устранил ошибку.
Ответ 25
У меня была эта проблема при развертывании только на prod-сервере. В моих других средах это работает... Я просто удалил материал в папке bin, а затем переиздал, и он работает после этого.
Ответ 26
Если вы используете Visual Studio, вы, вероятно, пытаетесь выполнить приложение в режиме выпуска, попробуйте изменить его в режиме отладки.
Ответ 27
Я попытался восстановить решение и очистить временные файлы ASP.NET без успеха.
Но после запуска IISRESET ошибка исчезла.
Обновление. У меня была такая же проблема снова через месяц. Я заметил, что MyWebsite.DLL существует в папке bin, но не существует в временных файлах ASP.NET(C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files).
Я пробовал несколько вещей, которые предлагаются на этом и "сообщение об ошибке Parser: не удалось загрузить тип" в вопросах Global.asax (я фактически забыл о своем собственном ответе), но ошибка снова исчезла только после IISRESET
Ответ 28
Хорошо. В моем случае VS 2017 проблема с легким решением вызвала эту проблему. Я отключил его и перезапустил VS, а затем восстановил свое решение, и проблема исчезла.
Ответ 29
Просто хотел добавить мои два цента. Я получал ту же ошибку, и я пробовал все предложения безрезультатно. Мое положение, вероятно, другое?
Оказывается, в автогенерированном файле "AssemblyInfo.cs" были некоторые посторонние пробелы, что мешало мне запускать веб-приложение (через отладочную версию). Вот как выглядел файл:
[assembly: AssemblyTitle("WebApplication2")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("
")]
[assembly: AssemblyProduct("WebApplication2")]
[assembly: AssemblyCopyright("Copyright ©
2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
После уничтожения пробелов в AssemblyCompany и AssemblyCopyright я наконец смог создать и запустить проект.
Наблюдается в следующей среде:
--Visual Studio 2017 Community версия 15.3.0
--Win 7 x64 Enterprise
--Новый проект > Visual С# > Веб > Веб-приложение ASP.NET > Веб-формы
Ответ 30
У меня возникла эта проблема, когда я случайно установил "Chrome" в качестве браузера по умолчанию для отладки. Когда я вернул его в "IE", проблема исчезла. Я не уверен, почему...
EDIT: я собирался удалить этот ответ, потому что я не был уверен в этом, но потом снова возникла проблема. Я перешел на просмотр с Chrome, а затем вернулся в IE, и он остановился! Что дает!?