2013-06-25 10 views
14

Mam projektu C# w Visual Studio 2010 i chcę uruchomić/debugowania mojej aplikacji z określoną zmienną środowiskową w miejscu.Ustaw zmienną środowiskową debugowania/uruchomienia w projekcie Visual Studio 2010 C#?

To uderzyło mnie jako cecha, która prawdopodobnie gdzieś istnieje, ale nie mogę jej znaleźć pomimo intensywnych poszukiwań. This question odnosi się do 2008 i poniżej i nie zawiera odpowiedzi, która mi pomoże. This question odnosi się do procesu budowania, a nie do debugowania/uruchamiania.

Doceniam, że obejście problemu oznaczałoby uruchomienie mojego IDE ze zmiennymi środowiskowymi, ale wolałbym to kontrolować od IDE. czy to możliwe?

+0

Jeśli rozumiem: czy chcesz zarządzać zmienną środowiskową w IDE i przekazywać do aplikacji podczas pracy? – michele

+0

@michele Chcę rozpocząć sesję debugowania i określić zmienną środowiskową, która zostanie udostępniona mojej aplikacji. W Eclipse byłoby to trywialnie osiągnięte przy użyciu "konfiguracji Run". –

+0

Czy próbowałeś użyć plików konfiguracyjnych? – michele

Odpowiedz

5

Jest to możliwe w IDE C++, a nie w C# IDE. Domyślam się, że został celowo pominięty, ponieważ C# ma lepsze sposoby na skonfigurowanie programu. Zmienne środowiskowe są niewygodne, ponieważ wymagają instalatora, który majstruje ze środowiskiem systemowym użytkownika po wdrożeniu aplikacji. To jest kruche, inny instalator może łatwo to zniszczyć i często to robi.

Sposób C# polega na użyciu ustawień aplikacji. Project + Properties, zakładka Ustawienia.

Ewentualną alternatywą jest użycie argumentu wiersza poleceń. Dostaniesz go w swojej metodzie Main(), podasz wartość w karcie Project + Properties, Debug.

Nadal można dostać to, co chcesz z trick, który trwa przy użyciu C++ IDE aby uruchomić program:

  • Dodaj nowy projekt do rozwiązania i wybierz Visual C++, generale Makefile szablon projektu.
  • Kliknij Zakończ natychmiast, kreator zadaje zbyt wiele pytań.
  • Kliknij prawym przyciskiem myszy dodany projekt, Właściwości, wybierz węzeł NMake.
  • Edytuj ustawienie "Utwórz linię poleceń" i ustaw je na "echo Gotowe".
  • Edytuj ustawienie "Wyjście", ustaw go na pełną ścieżkę do pliku wykonywalnego C#.
  • Wybierz węzeł debugowania, zmień typ debuggera na Tylko zarządzane.
  • Zobaczysz poniżej pod tym, czego chcesz, edytuj ustawienie "Środowisko".
  • Kliknij projekt prawym przyciskiem myszy, wybierz "Ustaw jako projekt startowy".
+4

Korzystanie ze zmiennych środowiskowych niekoniecznie wymaga od instalatorów modyfikacji środowiska systemu użytkownika. Zmienne środowiskowe są określane na podstawie procesu, zwykle dziedziczącego z systemu, ale nie zawsze. Dlatego istnieje "ProcessStartInfo.EnvironmentVariables". W aplikacji wieloprocesowej są one alternatywnym sposobem dostarczania konfiguracji uruchamiania do programu, gdy nie można modyfikować ani wykorzystywać interfejsu API argumentów linii poleceń. IMO pomijając to ustawienie dla debuggera C# jest błędem. – nicholas

+0

Inną okolicznością, w której jest to przydatne, jest opracowywanie aplikacji, która będzie hostowana przez stronę trzecią, która przekazuje informacje do programu za pomocą zmiennych środowiskowych. Zmienne środowiskowe są żywe i mają wiele zastosowań. Pominięcie ich było na pewno błędem. –

8

To nie jest tak czysty, jak ustawienie go z zewnątrz wnioskiem błędów, ale można dodać do Main coś takiego (NB Jestem programistą VB):

#if (DEBUG) 
    Environment.SetEnvironmentVariable("YourVar", "YourVal"); 
#endif 
2

dla C# debugowania ze zmiennymi środowiskowymi w Visual Studio 2013, co robię, to otwórz "Wiersz polecenia dla programistów dla VS2013" w menu Start w Visual Studio. Z wiersza polecenia ustawiam vars środowiska, które chcę, a następnie uruchom "devenv.exe", aby uruchomić Studio. Następnie otwórz rozwiązanie i rozpocznij debugowanie.

Należy pamiętać, że jeśli chcesz zmienić zmienne środowiskowe, musisz zatrzymać debugowanie, zamknąć program visual studio, a następnie zmodyfikować vary w tym otwartym wierszu polecenia, a następnie zacząć od nowa. Pamiętaj, że środowisko porusza się do przodu, ponieważ proces (CMD.EXE) uruchamia następny (DEVENV.EXE), a następnie następny (YourApp). Zmiany na samym początku nie są przesunięte do przodu, musisz rozpocząć łańcuch.

+0

Stwierdziłem, że jest to prostsze i skuteczniejsze rozwiązanie niż zaakceptowana odpowiedź (w każdym razie) –

Powiązane problemy