2012-05-23 16 views
7

Obecnie reorganizujemy nasz kod źródłowy, przenosząc różne elementy w nowej strukturze katalogów . Wpływa to na nasze rozwiązanie Visual Studio i pliki projektu, gdzie rzeczy takie jak odniesienia do zestawów, ewentualnie katalogi wyjściowe, zdarzenia poprzedzające i następujące po wydaniu itd. Muszą zostać zaktualizowane, aby odzwierciedlić nasze zmiany.Modyfikowanie rozwiązania Visual Studio i plików projektu za pomocą programu PowerShell

Ponieważ mamy wiele rozwiązań i projektów, moja nadzieja była częściowo zautomatyzować ten proces przy użyciu PowerShell, coś jak PowerShell „dostawcy” dla VS:

w idealnym świecie, chciałbym być w stanie coś zrobić jak:

$MySolution.Projects["MyProject"].PostBuildEvent = "copy <this> to <that>" 

wiem o PowerConsole (które nie zostały jeszcze w pełni zbadane) dla skryptów Visual Studio. Jednak dokumentacja jest skąpa i nie jestem pewien, czy naprawdę pokrywa ona moje potrzeby.

Coś jeszcze dla łatwej manipulacji plikami rozwiązań i projektów? Najlepiej w PowerShell, ale jestem otwarty na inne sugestie.

Odpowiedz

10

Z mojego doświadczenia wynika, że ​​najłatwiejszym sposobem manipulowania rozwiązaniami Visual Studio przy użyciu programu PowerShell (z poziomu programu Visual Studio lub poza nim) jest załadowanie pliku projektu jako pliku XML i użycie programu PowerShell do manipulowania nim.

$proj = [xml](get-content Path\To\MyProject.csproj) 
$proj.GetElementsByTagName("PostBuildEvent") | foreach { 
    $_."#text" = 'echo "Hello, World!"' 
} 
$proj.Save("Path\To\MyProject.csproj") 

Jeśli używasz skryptu w konsoli Nuget Package Manager, można uzyskać ścieżki do wszystkich plików projektu tak:

PM> get-project -all | select -expand FileName 
C:\Users\Me\Documents\Visual Studio 10\Projects\MyProject\MyProject.csproj 
C:\Users\Me\Documents\Visual Studio 10\Projects\MyProject\MyProjectTests.csproj 
PM> 
+1

Nie wiem, jak to ma być odpowiedź, ponieważ zajmuje tylko 1/2 pytania. Pliki rozwiązania to _nie_ XML i nie masz żadnych wskazówek, jak je otworzyć. – nagytech

+3

@Geoist OP powiedział: "Miałem nadzieję, że częściowo zautomatyzować proces za pomocą PowerShell" i mam nadzieję, że mu pomogłem - częściowo zautomatyzowanie procesu za pomocą PowerShell. Z mojego doświadczenia wynika, że ​​po zmodyfikowaniu plików projektu stosunkowo łatwo jest zmodyfikować pliki rozwiązań ręcznie, ponieważ są one trochę prostsze, zakładając, że zmieniły się tylko ścieżki, a nie identyfikatory GUID projektu lub nazwy. Oczywiście, możesz dodać bardziej użyteczną odpowiedź. –

Powiązane problemy