2013-01-02 4 views
0

Можно создать дубликат:
#if Not Debug in c#?C# с помощью #if DEBUG

Я не имею права на загрузку на сервер, так что я не в состоянии проверить #ELSE часть. мне было интересно, если это идеальный способ иметь условно выбрать то, что буква диска использовать в зависимости от того, если в DEBUG (тестовый режим) или в режиме производства (#else часть)

#if (DEBUG) 
    string driveLetter = "C:\\"; 
    #else 
     string driveLetter = ConfigurationManager.AppSettings["ProdDrive"]; 
    #endif 
+1

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

+2

Почему бы просто не использовать только конфигурацию? то есть. почему бы просто не настроить тестовые сборки с помощью C: \? –

+0

Подумайте о сложности, которую вы собираетесь наложить в своем коде, когда у вас есть большое количество настроек приложения! Скотт Гензельман хорошо написал управляющие файлы конфигурации через Visual Studio Configuration Manager: http://www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx –

ответ

0

Расширение ответ от @ Mike.Beeler я настоятельно рекомендую вам использовать Slow Cheetah для этого. Slow Cheetah предоставляет XML-преобразования для любого файла XML (включая .config) для вашего проекта на основе текущей конфигурации сборки.

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

Это свободное расширение VS от сотрудника Microsoft

http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5

0

Да, вы можете.

Вот некоторые примеры кода я вытащил из this msdn link:

// preprocessor_if.cs 
#define DEBUG 
#define MYTEST 
using System; 
public class MyClass 
{ 
    static void Main() 
    { 
#if (DEBUG && !MYTEST) 
     Console.WriteLine("DEBUG is defined"); 
#elif (!DEBUG && MYTEST) 
     Console.WriteLine("MYTEST is defined"); 
#elif (DEBUG && MYTEST) 
     Console.WriteLine("DEBUG and MYTEST are defined"); 
#else 
     Console.WriteLine("DEBUG and MYTEST are not defined"); 
#endif 
    } 
} 
+0

Просто размещение ссылки на другой сайт не считается хорошим ответом. Ссылка может быть удалена в будущем. Пожалуйста, добавьте некоторое объяснение к вашему ответу. – Steve

+1

хороший пример добавленной точки, найденный в ссылке. –

1

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

0

Вы можете добавить этот код

#define ANOTHERVALUE 

Примечание: Удалить #define DEBUG

Смежные вопросы