2011-01-25 7 views
6

Mam dość złożone rozwiązanie, zawierające 10 projektów poza projektami testowymi. Jest to sieć aplikacji rozproszonych & usług, które komunikują się za pomocą zdalnego dostępu; w związku z tym posiadanie odpowiednich zestawów referencyjnych (&) jest kluczowe. Właśnie dlatego chcę, aby całość została skompilowana i schowana w JEDNEJ kompilacji.Zbuduj całe rozwiązanie, ale dodaj globalne symbole warunkowej kompilacji dla tylko jednego projektu.

Jedną z aplikacji jest narzędzie do analizy/analizy, które uruchamia podproces innego - znacznie większego - aplikacji opartej na danych wejściowych użytkownika i wyświetla wyniki; W ten sposób inżynierowie mają narzędzie, które pomaga poprawić ustawienia "wielkich obliczeń". Oczywiście, że podproces jest zawarty w innym zespole, a duża część TE wyników zaprezentowanych na inżynierów jest generowany przez

#if ENABLE_TRACE_MATCHING 
Trace.WriteLine("Some engineering output"); 
#endif 

Moim problemem jest to, że warunkowe Symbole kompilację w ustawieniach projektu są ograniczone do montażu tego projektu, a zrobić nie propagować w stosunku do zwoływanych zespołów. Jak mogę skonfigurować mój zbudowany w taki sposób, że wszystkie projekty będą zbudowany bez ENABLE_TRACE_MATCHING jest określony, z wyjątkiem jednego debugowania/analiza-app projektu, gdzie wszystkie użyte projekty/zespoły muszą zostać skompilowane z ENABLE_TRACE_MATCHING jest zdefiniowane

Nie mogę też zastąpić #if ENABLE_TRACE_MATCHING przez #if DEBUG, ponieważ umożliwiłoby to mnóstwo różnych wyników, o których nasi inżynierowie nie wiedzieliby, jak sobie z tym poradzić.

Z góry dziękuję.

PS: Jeśli uważasz, że mój kod śmierdzi, to się zgadzam. Dodatkowo: w większości nie jest to mój kod;)

+0

zapomniałem wspomnieć: To wszystko jest C# i .NET 3.5 – user588939

Odpowiedz

1

Musisz dowiedzieć się więcej o Microsoft Build, który jest gotowym narzędziem Microsoft .NET obecnym w każdej instalacji.

Za pomocą MSBuild można zdefiniować te "symbole" (właściwości) i grupę poleceń (celów).

Można utworzyć skrypt MSBuild, który importuje domyślne cele Visual Studio ze wszystkich projektów w rozwiązaniu i deklaruje w skrypcie te właściwości ("symbole").

W rzeczywistości właściwość do ustawiania takich symboli już istnieje: "Definiuj składniki".

Tak więc, skoro go posiadasz, możesz mieć skrypt MSBuild, który dostarcza tę wartość właściwości, ponownie ją deklaruje, więc WSZYSTKIE cele MSBuild będą wiedziały o tych symbolach.

EDIT: Sprawdź to inna kwestia zbyt: msbuild, defining Conditional Compilation Symbols

Powiązane problemy