"Не вдалося завантажити тип [Простір імен] .Global", викликаючи у мене горе


106

У моєму додатку .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 #). Це виявилося дуже твердим горіхом для розтріскування ... будь-яка допомога буде оцінена!

Примітка. Global.asax та Global.asax.cs розташовані в одній папці.

Примітка2: При компілюванні з vs prompt з csc він компілює нормально


Чи працюють інші сторінки в додатку? Іноді це трапляється, коли веб-сервер налаштований на виконання 1.1, але додаток складено для 2.0
полудневого шовку

так, "Цільова рамка" - 2,0
gkdm

Відповіді:


162

Одна з ситуацій, з якою я стикався, що спричинила цю проблему, - це коли ви вказуєте платформу для складання через "Конфігурація збірки".

Якщо ви вказали x86 як свою платформу побудови, візуальна студія автоматично призначить bin / x86 / Debug як ваш вихідний каталог для цього проекту. Це цілком справедливо для інших типів проектів, за винятком веб-додатків, де ASP.NET очікує, що збірки будуть виведені в папку Bin.

Я виявив, що в моїй ситуації було те, що вони виводяться на обидва (Bin та Bin / x86 / Debug), за винятком того, що деякі DLL, і, незрозуміло, найважливіший - ваш DLL-веб-додаток, не вистачаючи у Bin папку.

Це очевидно спричинило проблему компіляції, а отже, виняток "Не вдалося завантажити тип Global". Очищення розчину та видалення збірок не вплинуло на наступні складання. Моє рішення полягало в тому, щоб просто змінити вихідний шлях у налаштуваннях проекту для веб-програми на Bin (а ​​не bin / x86 / Debug).


13
Також: Спробуйте закрити та повторно відкрити VS. Якщо ви використовуєте вбудований сервер налагодження, можливо, це інший веб-сайт. Відкриття / закриття перереєструє порти localhost.
BradLaney

1
У моєму випадку він хотів помістити вихідний проект у inetpub \ wwwroot \ myproject \ bin, але у мене був iisexpress налаштований на пошук у myProject \ bin. Просто зміна вихідного контуру вирішило проблему.
шиндиго

У моєму випадку у мене був .dll, який повинен був бути включений, але він не був налаштований на "копіювання локального" чомусь. Це спричинило проблему компіляції, аналогічну тій, що зазначена у цій відповіді.
ХокейJ

Спасибі, Стантоне. Це те, що працювало для мене, і якраз вчасно повернувся додому.
Білл Норман

3
Зміна вихідного шляху проекту до папки бін вирішила проблему. Дякуємо, що врятували мій день!
Тунахан

18

Ви змінили простір імен свого проекту? Я часто бачив це, коли я міняв простір імен у діалоговому вікні "Властивості проекту", але Visual Studio не змінив namespaceдекларацію в існуючих файлах коду.


Як ви думаєте, що я повинен робити?
gkdm

1
Перевірте простір імен у вашому файлі .cs та переконайтесь, що він збігається з тим, який оголошено у файлі asax. Я підозрюю, що вони будуть різними ...
PhilPursglove

Я тоді не впевнений. Все, що я зараз можу запропонувати, - це відновити та перевірити вміст просторів імен у вашій збірці за допомогою ILDASM.
PhilPursglove

Дякую, це було рішення, яке мені допомогло. Я використовую Resharper для перевірки усіх просторів імен у своєму рішенні.
Леонард

У мене щойно це сталося: у проекті MVC 5 (не те, що це має значення) і я змінив простір імен проектів, але забув змінити Global.asax (і папку App_Start). Незалежно від досвіду, іноді безглузді огляди все-таки отримують вас.
Джейсон Снелдерс

15

Я новачок у розробці asp .net, і я зіткнувся з подібною проблемою.

Я оновив клас як partialклас, і він працював чудово.

public partial class Global : System.Web.HttpApplication

1
Не знаю, чому мій файл Global закінчився без цього, але це було проблемою для мене, дякую!
ginja

9

Я перезапустив Visual Studio і помилки не було!


2
те саме працювало і для мене. Переконайтесь, що ви закрили ВСІ Visual Studio відкритими.
alansiqueira27

5

Ось ще одна книга. Схоже, це відбувається, коли ви запускаєте більше однієї веб-програми з одного і того ж номера порту.

В основному, у мене є декілька гілок, над якими я працюю, у мене є головна гілка і постановочна гілка і відділення для випуску. Коли я перейшов гілку на гілку послідовності, я помітив, що вона використовує ту саму конфігурацію адреси порту, тому я вирішив змінити це. Потім я отримав ще одне попередження про те, що це резервування суперечить іншому налаштованому додатку. Сервер IIS Express дуже чутливий до цього і з будь-якої причини цеглить конфігурацію.

Просто вибравши третій невпливований порт, ця проблема усунулася, тому що вона потім переносить порт на нове відображення каталогу (мої гілки розташовані по-різному на диску). Я помітив це, тому що намагався змінити ім'я типу, на яке вказувавGlobal.asax але ім'я типу було незмінним навіть після перезавантаження сервера, так що чітко я змінив код не відображений розгортанням IIS Express.

Отже, перш ніж ви втратите надто багато сну через це, спробуйте змінити номер порту IIS, який зараз використовується для запуску веб-проекту.


5
  1. Клацніть правою кнопкою миші на проектному рішенні та виберіть Batch Build.
  2. Потім виберіть назву проекту та очистіть і відновіть.

Працює прекрасно для мене у 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
        //
    }
}

Сподіваюся, це допоможе


3

Перевірте Дію збірки Global.asax.cs. Його слід встановити на Збірник.

У Провіднику рішень клацніть правою кнопкою миші Global.asax.cs і перейдіть до Властивості. На панелі властивостей встановіть Дію збірки (при цьому не налагоджуючи).

Схоже, що VS 2008 не завжди додає файли .asax (.cs) за замовчуванням правильно.


3

У мене виникла аналогічна помилка, коли я мав

<clear/>

тег як дитина (перша дитина)

<assemblies>

в моєму Web.config . Я вставив теги у свою web.config, щоб спробувати запобігти успадкуванню конфігурації у програмі, розгорнутій у розділі "Веб-сайт за замовчуванням" у IIS.


Це безумовно вказувало мені в правильному напрямку. В кінці я поставив <clear /> у батьківський каталог, оскільки це був порожній заповнювач. Я вважаю, що справжньою проблемою було те, що вона очистила збірки моєї програми, на яку не було можливості завантажувати збірку додатків.
Дуг Лампе

Я теж пережив це - явно видаляючи вибрані збірки замість того, щоб добре очистити список.
Арве Систад

2

У моїй ситуації це було пов'язано з типом проекту веб-сайту / веб-додатків. Нещодавно ми переїхали до MVC і довелося змінити його на веб-додаток.

Отже, рішення було простим: виберіть свій веб-сайт у Провіднику рішень та видаліть його з рішення, потім клацніть правою кнопкою миші рішення та виберіть Додати -> Існуючий проект ( не веб-сайт ), перекомпілюйте веб-сайт.


2

Стара публікація, але я іщу цю помилку при спробі перетворити проект з веб-сайту на проект веб-додатків.

Дотримуйтесь вказівок цього посилання . У мене все ще з’явилася помилка global.asax, але все, що я зробив, було видалити її та повторно додати назад, натиснувши правою кнопкою миші на проект у візуальній студії та вибравши Додати новий елемент. Додайте файл global.asax, і він спрацював.


2

На жаль, жодне з них не працювало для мене. Я знайшов виправлення, яке було більш специфічним для розробки, зокрема, налагодження на вашій локальній машині. Також, на жаль, це насправді не вирішує проблему так, як я сподівався, але якщо ви до кінця дотепності, це може змусити вас знову запуститись.

TL; DR: у властивостях проекту на веб-вкладці в розділі Сервери виберіть пункт Використовувати локальний веб-сервер IIS. Адреса,

http://localhost/MyApp" 

було вже заселено (у мене є IIS7, .NET 4.0). Спочатку було обрано "Використовувати сервер розробки Visual Studio" з віртуальним шляхом "/"

Мене насправді спантеличує той факт, що нічого іншого не працювало, я переглянув усі пропозиції, які я міг знайти на SO, і нічого не вийшло. Дивна річ у тому, що помилка (здавалося б, минуло кілька місяців, як я востаннє подивилася) виявилася, коли я додав новий файл ascx, подібний до існуючого, який було додано зі старого проекту .net 2.0 (я думаю) це дозволило б керувати користувацьким керуванням користувача всередині програми. Це працювало, красиво, довгий час, поки я не спробував додати цей новий файл. Додавши її та побачивши помилку, я негайно відмінив усі зміни, але помилка Global.ascx не пішла б, навіть не підірвавши весь проект та отримавши останню інформацію з контролю джерела.


2

Я перетворив своє рішення з VS2003 на VS2010 і виникли проблеми з перетворенням проекту веб-додатків.

Я відчув ту саму проблему, і жодна з відповідей не працювала на мене.

Що для мене працювало:

  • Клацніть правою кнопкою миші рішення та виберіть Менеджер конфігурацій
  • Переглянули кожну з конфігурацій у спадному списку "Конфігурація активного рішення".
  • Включено веб-додаток у збірку, поставивши галочку "Збірка".

Здавалося б, проблеми, які виникли під час перетворення, чомусь усунули проект веб-додатків із збірки.

Сподіваємось, ця відповідь допомагає іншим, хто має ту ж проблему ...


1

Якщо ви відновлюєте або змінюєте проект та переходите через файли зі старого, переконайтесь, що перевірте блок спадкування у вашому глобальному. У моєму випадку колишній проект / рішення було названо інтранет, і я відтворив його як Інтранет, але коли я перейшов через файли, це не сподобалось малому регістру (duh). Просто зробіть загальний огляд імен файлів.



1

У мене були подібні проблеми, коли я отримував цю помилку в проекті.

Could not load type [Namespace].Global
Error in Line 1   etc etc

Провівши деякий час, я підозрюю, що функція з можливими помилками класу ..послідовно коментуючи цю конкретну функцію, моя проблема вирішується.

Я не знаю, чому Visual Studio не видав мені таку конкретну помилку під час налагодження. Але ця помилка може виникнути через деякі помилки у файлі класу ..


1

Ця робота для мене: Перше: здається, що незалежно від того, що ти сказав до візуальної студії, іде завжди шукає файл у: bin (для веб-додатків та поза курсом у моєму випадку) Отже, навіть коли я сказав до візуальної студії певний шлях до завантаження файлу, ідея шукає неправильний шлях. Отже, я змінюю в: Build / Configuration Manager тип виводу на: Release (попередній я очищав рішення, навіть вручну), тому коли файл .dll був створений, тоді я переміщувався вручну в папку "bin" під проектом / рішенням папку. Сподіваюся, це буде корисним !!


1

У моєму випадку, саме через мій цільовий процесор (x64) я змінив його на x86, очистив проект, перезапустив VS (2012) і відновив проект; тоді його вже не було.


1

Коли я зіткнувся з цією проблемою зовсім недавно, я спробував усе, що було сказано тут, але безрезультатно. Вирвавши волосся, я вирішив спробувати видалити всю свою кодову базу (так, досить відчайдушно!), А потім повторно завантажив усе з мого сховища коду. Після цього все знову спрацювало нормально.

Здається, надзвичайне рішення, але я просто подумав, що я включу його сюди, як про це не згадувалося раніше в цій темі.

(Зауважте, що в інший раз, коли я стикався з цією проблемою, це коли Global.asax успадковував компонент, який потрібно було зареєструвати на хост-машині. Цього не вистачало, отже, я отримав цю саму проблему).

TL; DR; Якщо всі відповіді в цій темі не працюють для вас, спробуйте видалити та повторно завантажте всю свою кодову базу!


1

Я кілька разів переживав цю проблему, і в кожному випадку я перебудовував комп’ютер або переходив на новий комп'ютер. Мій перший крок (окрім оновлення машини та встановлення Visual Studio) - це зняти мої проекти з Git та протестувати їх.

Я щоразу потрапляю на цю помилку, тому що намагався отримати доступ до свого локального коду перед її компілюванням. Розумієте, у мене є налаштування Git і Subversion, щоб ігнорувати мої папки bin / build, тому після витягу з мого сховища я забув запустити збірку, яка витягує необхідні пакети з Nuget (оскільки я також Git / SVN ігнорую) і створює DLL, необхідні для фактичного запуску мого додатка.

Я сумніваюся, що це вирішить проблеми більшості людей, але я не побачив її у списку потенційних рішень, тому думав, що додам.


1

У моєму випадку я додав Global.asax до проекту WCF, щоб експериментувати з ним, але вирішив його видалити. Я видалив його з Провідника рішень, але оскільки він все ще знаходився в папці, конвеєр все ще знаходив його і викликав цю помилку.

Я видалив Global.ASAX і GLobal.asax.cs з файлової системи, і це вирішило помилку.


ЦЕ вирішив це для мене, дякую, але я також хотів би додати для інших, що в моєму випадку я ніколи не додавав Global.asax до свого проекту. Але, як згадувалося тут, файли global.asax та global.asax.cs були у моїй файловій системі. Коли я видалив їх, помилка пішла.
stackonfire

1

Будучи в грі в розробку майже 20 років, цей каштан продовжує переслідувати мене в декількох проектах.

Таким чином, сьогодні, переживаючи цю ж проблему знову, проти іншого проекту, я вирішив дослідити далі, і я вважаю, що це пов’язано з розташуванням папки Bin ... або, точніше, з вихідним шляхом папки бін.

Для мене для простого веб-додатка на основі сервісів, налаштованого на запуск / налагодження через IIS, він змінював вихідний шлях з bin \ debug в bin \, що вирішив його

Проект> Властивості> Побудова> Шлях виводу

Серйозно сподіваємось, що це допомагає.


0

Мене здивувало те саме прокляте питання. Я спробував видалити і і global.asax(закрив VS2010 перед додаванням). Очистили проект / рішення, перевірили на наявність будь-яких змін у конфігурації веб-додатків та інших матеріалів, які працювали для інших людей у ​​потоках SO. Нарешті я очистив рішення, видалив папки bin / obj і зупинив усі запущені сервери розробки VS2010, тоді я повернув всі зміни назад і виявив, що програма знову працює. Я перекроював ті самі речі, і тепер це працює добре.

Знову сталося, і цього разу це рішення спрацювало на мене.


0

перейдіть до Менеджера конфігурацій у розділі властивостей вашого рішення. Тоді переконайтеся, що всі проекти та будівництво, і це не буде проблемою.


0

Мені довелося видалити (дублювати) файли з диска, які не були включені в проект. Схоже, дублікати були викликані невдалою перейменуванням. Назви файлів були різними, але той самий код.

Після видалення всіх файлів oof. * Я зміг сканувати.

  • foo.aspx
  • foo.aspx.cs
  • foo.aspx.designer.cs
  • oof.aspx
  • oof.aspx.cs
  • oof.aspx.designer.cs

0

у моєму випадку IISExpress вказував на той же порт, що і IIS, щоб вирішити його

C:\Users\Your-User-Name\Documents\IISExpress\config\applicationhost.config

і шукаючи порт, ви знайдете <site>...</site>тег, який потрібно видалити або прокоментувати


0

У мене виникла ця проблема під час розгортання лише на сервері prod. У інших моїх середовищах це працює ... Я просто видалив речі з папки Bin, а потім повторно опублікував, і він працює після цього.


0

Якщо ви використовуєте Visual Studio, ви, ймовірно, намагаєтеся виконати програму в режимі випуску, спробуйте змінити її на режим налагодження.


0

Я намагався відновити рішення та очистити тимчасові файли ASP.NET без успіху.
Але після запуску IISRESET помилка зникла.

Оновлення : через 1 місяць у мене знову була така ж проблема. Я помітив, що MyWebsite.DLL існує у папці bin, але не існує у тимчасових файлах ASP.NET (C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Тимчасові файли ASP.NET). Я спробував кілька речей, які пропонуються з цього питання, і "Повідомлення про помилку Parser: Не вдалося завантажити тип" у питаннях Global.asax (я фактично забув про власну відповідь), але помилка знову зникла лише після IISRESET


0

Ну а в моєму випадку VS 2017, це навантаження на легке рішення було причиною цієї проблеми. Я відключив його і перезапустив VS, а потім переробив своє рішення і проблема пішла.


2
Що таке "легке" рішення?
Fandango68

0

Просто хотів додати свої два центи. Я отримував ту саму помилку, і я намагався всі пропозиції безрезультатно. Моя ситуація, мабуть, інша?

Виявляється, автоматично створений файл "AssemblyInfo.cs" мав кілька сторонніх пробілів, що заважало мені запускати веб-додаток (через налагодження). Ось як виглядав файл:

[assembly: AssemblyTitle("WebApplication2")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("

            ")]
[assembly: AssemblyProduct("WebApplication2")]
[assembly: AssemblyCopyright("Copyright © 

             2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Вбивство пробілів у Асамблеї компанії та Асамблеї авторських прав я нарешті зміг створити та запустити проект.

Спостерігається у наступному середовищі: - Visual Studio 2017 спільноти версії 15.3.0 --Win 7 x64 Enterprise - Новий проект> Visual C #> Web> Веб-додаток ASP.NET> Веб-форми

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.