Символы условной компиляции, не определяемые

Я испытываю затруднения, заставляя Visual Studio вести себя, поскольку я ожидал бы это. Я создал 2 профиля конфигурации. Каждому определили НЕЧТО символа, и другой определили ПАНЕЛЬ символа. И у меня есть этот код:

static class MyClass{
#if FOO
  public static string const MyData="foo defined";
#endif
#if BAR /*yes, I know #elif would work here too.. just trying to be simple*/
  public static string const MyData="bar defined";
#endif
}

и затем позже в другом файле я имею

 if(MyClass.MyData=="foo defined").....

Ну, в моем приложении я получаю ошибку что MyClass. MyData не определяется.

Кроме того, если у меня есть он на профиле НЕЧТО и типе в чем-то как #error test после #if FOO затем это будет иметь ошибку сборки, но если я удалю это, то это создаст очень хорошо и когда я пойду для выполнения его, я получу ошибку компиляции, что MyClass не содержит определение для MyData. Кроме того, это - веб-приложение ASP.NET.

Кто-то может помочь мне выяснить, как использовать условную компиляцию? Это действует, как будто Visual Studio компилирует его правильно с символами компиляции, но каждый раз, когда веб-сервер ASP.NET выполняет его, это перекомпилировало его без любых символов... Но это просто не имеет никакого смысла, почему он сделал бы это..

Править: Не имеет значения, если я использую НЕЧТО или профиль ПАНЕЛИ, ни один из них, кажется, определяют символ MyData, как они должны.

EDIT2:

Хорошо, это важно для репродуцирования!!! Создайте новое App_Code папка в Вашем решении и затем добавляет, что .cs файл тут же добавляет MyClass к нему. Это воспроизведет ошибку, работающую в пустом проекте. Я на самом деле упростил его вниз до просто

#if !(FOO || BAR)
  #error neither foo or bar defined
#endif

Кажется, что Visual Studio не устанавливает условные символы компиляции для регулярных .cs файлов в App_Code

5
задан Earlz 30 December 2009 в 18:56
поделиться

1 ответ

Поскольку ASP.NET компилирует ваш код вне среды разработки, он использует собственную конфигурацию сборки. Вы должны установить символ условной компиляции в вашем web.config, смотрите ссылку здесь: Условная компиляция в ASP.NET 2.0

6
ответ дан 14 December 2019 в 13:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: