2009-06-24 16 views
7

Czy VS ma zmienną środowiskową dla ścieżki do bieżącego rozwiązania?Zmienna środowiskowa ścieżki Visual Studio Solution

Na przykład istnieje "% PathToWebRoot%", który jest zwykle ustawiony na katalog "WebSites" w katalogu projektu VS. Jego wartość można zmienić na wiele sposobów. Zastanawiam się, czy istnieje zmienna, która zmienia się za każdym razem, gdy ładujesz rozwiązanie, aby wskazać jego katalog główny.

Tworzę testy jednostkowe, które potencjalnie mogą być uruchamiane na różnych komputerach i jeden z kierunków, które należy ustawić, zanim metoda zostanie określona jako AspNetDevelopmentServerHost. Zaleca się, aby nie kodować ich w sposób ciągły, ale zalecana zmienna środowiskowa niekoniecznie musi znajdować się w miejscu, w którym znajduje się Twoja witryna, a nie w tym przypadku.

Odpowiedz

13

VS ma wiele zmiennych makro, które działają od w ramach VS. Ta, która podaje pełną ścieżkę do rozwiązania, nazywa się $(SolutionDir). Jednak, mimo że działa to w przypadku zdarzeń wstępnych i późniejszych (oraz AFAIK w pliku MSBuild rozwiązania), nie jest to zmienna środowiskowa. Jeśli myślisz o tym, nie możesz mieć (globalnej) zmiennej środowiskowej, która wskazuje "ścieżkę do bieżącego rozwiązania", ponieważ możesz mieć otwartych więcej niż jedno wystąpienie VS.

W zależności od struktury testowania jednostek, często można zapytać o kontekst wykonania, aby uzyskać bieżący katalog. To może nie dać ci ścieżki rozwiązania, ale ...

+0

prawda, nawet jeśli bieżąca instancja VS zmieniło to pasujące to ustawienia, które mogłyby zepsuć każde inne wystąpienie. Dam próbkę $ (SolutionPath), testy jednostkowe są uruchamiane z poziomu VS, więc może być to, czego potrzebuję. – Otis

+0

Pracowałem jak wdzięk, dzięki. Nie sądzę, że wiesz, czy istnieje jeden, aby dowiedzieć się aktualnego portu serwera rozwoju? – Otis

+0

Sposób, w jaki zwykle znajduję nazwy tych makr, polega na otwarciu właściwości projektu i przejściu do karty Zbuduj zdarzenia. Jeśli to zrobisz i klikniesz jeden z przycisków edycji, pojawi się okno dialogowe z (między innymi) przyciskiem Makra. Kliknięcie tego przycisku wyświetli listę wszystkich makrozmiennych dostępnych dla twojego projektu.Nie mam projektu internetowego pod ręką, więc nie mogę go dla ciebie wyszukać, ale na pewno nie ma numeru portu w Bibliotece zajęć, który właśnie sprawdzam ... –

5

Visual Studio ujawnia zmienną środowiskową dla ścieżki rozwiązania - nazywa się ona SolutionPath. Wygląda to tak:

SolutionPath=D:\Team\MyProject\main-branch\MyProject.sln

Co ważne, można go używać w dowolnym procesie zrodził z Visual Studio - na przykład, uruchamianie skryptów wsadowych od rozwiązania (to w jaki sposób może być różny w różnych wystąpień Visual Studio).

Jeśli skonfigurujesz program Visual Studio do uruchamiania plików .bat, klikając je dwukrotnie, podążając za this guide, wówczas zmienna środowiskowa będzie dostępna w pliku wsadowym.

W moim konkretnym przypadku, musiałem dostać się do katalogu w ramach mojego rozwiązania i miałem kilka gałęzi kodu na tym samym poziomie. Ale mój skrypt wsadowy znajdował się na wyższym poziomie w drzewie źródłowym i nie miał łatwego sposobu określania bieżącej gałęzi. Na przykład, to była moja konstrukcja:

D:\Team\MyProject\ 
    L-- Build 
     L-- MyBatchScript.bat 
    L-- main-branch 
     |-- MyProject.sln 
     L-- important-folder 
    L-- dev-branch 
     |-- MyProject.sln 
     L-- important-folder 

I odwołuje MyBatchScript.bat jako element rozwiązania dla każdego rozwiązania, więc mogłem go uruchomić poprzez dwukrotne kliknięcie na niego.

Aby dostać folder roztworu zamiast ścieżki do pliku rozwiązanie, użyłem trochę DOS skryptu wsadowego Magic:

FOR %%d IN (%SolutionPath%) DO SET SolutionFolder=%%~dpd 
REM Now I can run a tool with the correct folder 
mycustomtool.exe %SolutionFolder%important-folder 
Powiązane problemy