Приложение dotnet не распознает символ компиляции, определенный в csprojC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Приложение dotnet не распознает символ компиляции, определенный в csproj

Сообщение Anonymous »

У меня есть приложение .NET 8, которое использует специальный символ условной компиляции следующим образом:

Код: Выделить всё

#if MY_SYMBOL
public MyConstructor() : base(ArgumentOne) { }
#else
public MyConstructor() : base(ArgumentTwo)
{
throw new Exception("A compilation-time tier symbol must be set");
}
#endif
Я обнаружил, что если я передам свой символ команде dotnet run как свойство DefineConstants, например: dotnet run -p:DefineConstants=MY_SYMBOL - тогда он работает нормально (код компилируется с помощью первого конструктора).
Однако, если я сделаю это в своем файле csproj вот так...

Код: Выделить всё

$(DefineConstants);MY_SYMBOL

...затем запустите приложение в режиме отладки, используя профиль запуска. Символ не установлен, поэтому код компилируется с помощью второго конструктора, указанного выше.
В чем причина этого? Я пытаюсь реализовать сценарий, в котором у меня есть символ по умолчанию в моей локальной среде разработки, а затем передать собственный символ через dotnet run в моем файле Dockerfile для сред развертывания. Есть ли лучший и более надежный подход?

Подробнее здесь: https://stackoverflow.com/questions/787 ... -in-csproj
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»