Pytanie Jak zdefiniować stałą globalnie w C # (jak DEBUG)


Chcę inaczej skompilować projekt, zgodnie ze stałą zdefiniowaną przez #define, tak jak poniżej:

#define USE_COMPONENT_X

#if USE_COMPONENT_X
...

#endif

i mogę to zrobić w C #. Ale kiedy przejdę do innego pliku w tym samym projekcie, ta stała nie jest zdefiniowana. Czy mogę w jakiś sposób zdefiniować stałą dla całego projektu, tak jak definiuje się DEBUG?


14
2018-01-12 18:07


pochodzenie




Odpowiedzi:


Możesz dodać przełącznik / define kompilator.

  1. Otwórz okno dialogowe Property Pages projektu.
  2. Kliknij folder Właściwości konfiguracji.
  3. Kliknij stronę właściwości Build.
  4. Zmodyfikuj właściwości warunkowych stałych kompilacji.

27
2018-01-12 18:10



Możesz także bezpośrednio edytować plik csproj, poszukaj właściwości: DefineConstants. - si618
Czy możesz podać przykład użycia? Otrzymuję "Parametr kompilatora jest nieprawidłowy," ... "zostanie zignorowany." błędy. - Okuma.Scott
Wspaniały! Wygląda na to, że wiele makr jest również obsługiwanych przez separator w średniku ";". - Itachi


Możesz pójść o krok dalej i stworzyć różne konfiguracje projektu jako warianty standardowej konfiguracji projektu Debug and Release. Menedżer konfiguracji w menu budowy pozwoli ci to osiągnąć. Następnie, gdy znajdujesz się w zakładce "Właściwości" właściwości projektu, możesz wybrać różne konfiguracje i ustawić warunkowe stałe kompilacji, które są odpowiednie dla każdej konfiguracji. Pozwoli to zaoszczędzić mnóstwo czasu, gdy chcesz zamienić między różnymi kombinacjami warunkowo skompilowanego kodu.


6
2018-01-12 19:14





Ustaw go w swoim IDE lub użyj przełącznika wiersza komend kompilatora, np. -definiować dla Mono.


0
2018-01-12 18:11





Mam nadzieję, że nie odstąpię od tematu, ale zamiast "stałej" być może zdefiniuję interfejs dla typu stałej, a następnie wykorzystam jedną z wielu platform wtryskowych zależności, aby zarządzać definicją, wtryskiem i czasem życia "stałej".


0
2018-01-12 18:13



Czy możesz wyjaśnić więcej na ten temat? - Victor Rodrigues
Brzmi to jak coś, co można by zmienić w trakcie działania aplikacji, a nie podczas kompilacji (o czym pisał autor). Jeśli ustawiona jest stała / define, kod nie powinien być zawarty w wynikowym złożeniu. - Bryan Rehbein