C #: дефис в директиве препроцессора - PullRequest
4 голосов
/ 21 октября 2019

Я читаю имя машины из переменной среды COMPUTERNAME в условный символ компиляции:

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <DefineConstants>TRACE;$(COMPUTERNAME)</DefineConstants>
</PropertyGroup>

После этого я объявляю директиву препроцессора для компиляции некоторого кода в зависимости от имени машины:

#if MY-MACHINE
// Some code
#elif SOME-ELSE-MACHINE
// Other lines of code...
#else
// ...
#endif

Однако в имени машины может быть дефис (-), поэтому я получаю ошибки и не могу собрать проект с этой конфигурацией. При наборе кода выше в Visual Studio, я получаю ошибку:

Ошибка CS1025 Ожидается однострочный комментарий или конец строки

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

Предупреждение MSB3052 Недопустимый параметр для компилятора, '/ define: MY-MACHINE' будет игнорироваться.

Как обойти это? Есть ли способ «уйти» от условных символов компиляции. Или я должен просто отказаться от этого и прочитать время выполнения переменной среды?

...