Ошибка синтаксического анализатора: не удалось загрузить тип после изменения выходного каталога в веб-приложении asp.net - PullRequest
3 голосов
/ 17 ноября 2011

Это не совсем вопрос о проблеме;Я решил это сам (после того, как пару дней бился головой о стену), и я хотел бы поделиться этим, но мне было бы ДЕЙСТВИТЕЛЬНО интересно, если бы кто-нибудь мог дать мне объяснение, почему это происходит.

Ситуация достаточно проста: в C# 4.0, VS 2010 (не проверял в других конфигах) создайте пустое ASP.NET web application

: File -> New -> Project (not Web Site) -> Web -> ASP.NET Empty Web Application.

Во вновь созданном веб-приложениисоздать страницу (add -> new item -> web form).Затем запустите проект и, конечно, он работает.

Теперь сделайте следующее:

  1. Очистите выходные данные проекта, т.е. удалите все из папки bin
  2. Изменитепапка вывода проекта: свойства проекта -> сборка -> путь вывода.Например, измените bin \ на bin \ debug (это то, что я сделал)

BANG! Проект больше не работает!Попробуйте запустить его (F5), и вы получите:


Server Error in '/' Application.
Parser Error 
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

Parser Error Message: Could not load type 'WebApplication2.WebForm1'.

Source Error: 


Line 1:  <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %>
Line 2:  
Line 3:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


Source File: /WebForm1.aspx    Line: 1 

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.237 

Если вы не выполните шаг № 1 (удалите все из папки bin) проектаработает, но когда вы меняете код внутри WebForm1.aspx.cs, вы начинаете получать сообщения «Исходный файл не найден» от debugger.Как я понимаю, по какой-то причине% $ & ^ # $ ^ * он все еще использует dll из папки bin.

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

Ответы [ 5 ]

2 голосов
/ 31 июля 2014

Я знаю, что уже слишком поздно, но если кто-то еще ищет это.У меня была та же проблема, и я обнаружил, что папка bin не была включена в проект.Включите папку bin в проект, соберите ее, и все должно быть в порядке.

1 голос
/ 06 марта 2013

В качестве предупреждения: это также может произойти, если ваш файл Web.config configuration/system.web/compilation/assemblies испортился, особенно если вы добавляете <clear /> и IIS не может найти некоторые важные сборки.

1 голос
/ 18 сентября 2012

Я просто удалил все файлы .dll из вашего проекта (\bin;\debug;\Release) добавил новый элемент (какую страницу для тестирования) в проект и попробовал его на новой странице.

Это работает. Затем установите стартовую страницу на страницу проблемы, которая вызвала ошибку, и повторите попытку, на этот раз она работает.

1 голос
/ 18 ноября 2011

Проект больше не работает

Хм, ну, это не совсем верно.Проект в порядке.VS покорно создает библиотеки, где вы хотите, чтобы они.Это просто не то, где вы должны создавать папку.

Что вы действительно спрашиваете, так это почему ASP.NET не загружает dll из случайной подпапки bin.ASP.NET будет искать сборки только в нескольких местах.Помимо корзины есть также GAC и папка .net Framework (но я подозреваю, что это только для сборок .net).Я не знаю почему, но я подозреваю, что это избавит вас от необходимости указывать, где его искать (настройки реестра Ala)

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

Сохраните себе горе и поместите dll в папку bin, чтобы ASP.NET загрузил их

КакЕсли вы заметите, вы можете спросить себя, для чего предназначен этот выходной каталог.Типичный вариант использования - библиотеки, на которые ссылаются другие сборки.Также исполняемые файлы могут быть помещены куда угодно, поскольку они являются точкой входа, а не ASP.NET

0 голосов
/ 25 января 2013

Хотя это и не связано напрямую с вашим сценарием, эта ошибка также может возникать из-за того, что во время выполнения ASP.NET не удается найти папку / bin.

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

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

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

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