c # с использованием #if DEBUG

c # с использованием #if DEBUG

<цитата>

Возможный дубликат:
#if Not Debug in C #?

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

    #if (DEBUG)
     string driveLetter = "C:\\";
    #else
      string driveLetter = ConfigurationManager.AppSettings["ProdDrive"]; 
    #endif
 
Показать лучший ответ

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

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

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

Да, можно.

Вот пример кода, который я взял из этой ссылки msdn :

// 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
    }
}
 

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

хороший пример добавленного примера найден в ссылке.

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

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

#define ANOTHERVALUE
 

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

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

Чаще всего используется для автоматической установки правильной строки подключения к БД, но вы также можете использовать ее для настройки параметров приложения.

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

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