Ошибки компиляции в развернутом веб-приложении, но не в IDE - PullRequest
2 голосов
/ 30 декабря 2010

В моем развернутом веб-приложении я получаю следующую ошибку:

CS0103: имя 'releaseLionButton_Click' не существует в текущем контексте

Идентифицирует этов качестве оскорбительной строки:

<asp:Button ID="releaseLionButton" runat="server" 
            Text="Release the Lion!"
            OnClick="releaseLionButton_Click"></asp:Button>

В файле с выделенным кодом у меня есть следующий код:

internal void releaseLionButton_Click(object sender, EventArgs e)
{
    if (selectedLionCage != null && selectedLionCage.DoorState == DoorState.Closed)
        selectedLionCage.OpenDoor();
}

Теперь я могу устранить эту ошибку, изменив internal наprotected, что имеет смысл, поскольку страница ASPX сообщает, что она «пересекается» с классом Page, определенным в файле с выделенным кодом.

Все нормально.

Что я не делаюЯ понимаю, почему программа работает с internal, когда я запускаю программу в IDE на моей локальной машине.

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

Я хочу, чтобы не работал в IDE, если он не будет работать по-настоящему!

Так вот мой вопрос:

Как я могу получить локальную версию вIDE для генерации всех ошибок компиляции, с которыми столкнется развернутая версия?

Дополнительная информация, чтобы отвлечь вас от реальной проблемы:

Целевой платформой для приложения является .NET Framework 3.5.Это должно быть так, потому что он ссылается на System.DirectoryServices.AccountManagement.

. На странице ошибок на тестовой машине, напротив, написано «Информация о версии: Microsoft .NET Framework Версия: 2.0.50727.4206; ASP.NET Версия: 2.0.50727.4209 ".

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

Другие, похожие проблемы, с которыми я сталкиваюсь

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

Иногда, когда я реорганизую код (например, изменяя имя переменной), он предупреждает меня, чтокод в настоящее время не компилируется, поэтому рефакторинг может не работать.И все же я не могу заставить IDE сказать мне, почему он думает, что код не будет компилироваться.Он по-прежнему работает отлично, и в списке ошибок нет ошибок или предупреждений!В других случаях, при отсутствии обнаруженного мной шаблона, он не будет отображать предупреждающее сообщение во время рефакторинга.

ОБНОВЛЕНИЕ, касающееся проверки ASPX-файлов

При ответе другой вопрос мне было указано, что проверка для файлов ASPX будет работать, если для редактора C # включена опция «Показать живые семантические ошибки».Это объясняет, почему у меня были проблемы, которых, похоже, не было ни у кого.

Ответы [ 2 ]

3 голосов
/ 31 декабря 2010

Проблема в том, что если у вас есть традиционный веб-сайт asp.net с кодовыми именами .aspx и .cs / vb, то на самом деле задействовано две различных сборки. Ваш код компилируется в одну сборку, а IIS берет .aspx и динамически компилирует его в другую сборку. Когда вы помечаете что-то как внутреннее, вы определяете границу сборки, и, таким образом, динамическая сборка aspx не может ссылаться на внутренний элемент в сборке codebehind.

Теперь о том, почему это не работает так на веб-сервере VS. Я не знаю, так как я не знаком с его особенностями. Однако вы можете просто настроить свой веб-сайт в IIS на своем компьютере. Таким образом, он будет вести себя так же, как «производственная» версия.

Если вы беспокоитесь о его отладке, то нет проблем, запустите Visual Studio с правами администратора, а когда на вашем компьютере произойдет ошибка сервера, подключитесь к w3wp.exe с помощью Visual Studio, и он выяснит разбить на ошибку.

0 голосов
/ 30 декабря 2010

Я думаю, вы не компилируете свои веб-проекты в своем решении.

...