2012-05-23 2 views
7

В настоящее время мы реорганизуем наш исходный код, перемещая материал в новом каталоге . Это влияет на решение нашей Visual Studio и файлы проекта, где такие вещи, как ссылки на сборку, возможно, каталоги вывода, события до и после сборки и т. Д. ... должны быть обновлены, чтобы отражать наши изменения.Изменение решений Visual Studio и файлов проекта с помощью PowerShell

Поскольку у нас есть много решений и проектов, моя надежда была частично автоматизировать процесс с помощью PowerShell, что-то вроде «поставщика» PowerShell для VS:

В идеальном мире, я мог бы сделать что-то как:

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

Я знаю о PowerConsole (который я еще не до конца изучен) для сценариев Visual Studio. Однако документации недостаточно, и я не уверен, что она действительно покрывает мои потребности.

Что-нибудь еще для легкого управления файлами решений и проектов? Желательно в PowerShell, но я открыт для других предложений.

ответ

10

По моему опыту, самый простой способ управления решениями Visual Studio с использованием PowerShell (изнутри или за пределами Visual Studio) - загрузить файл проекта в формате XML и использовать PowerShell для его управления.

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

Если вы используете скрипт в NuGet Package Manager Console, вы можете получить пути ко всем файлам проекта, как так:

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

Не знаете, как это должно быть ответьте, поскольку он касается только 1/2 вопроса. Файлы решений - это _not_ XML, и вы не указали, как их открыть. – nagytech

+3

@Geoist OP сказал: «Я надеялся частично автоматизировать процесс с помощью PowerShell», и я надеюсь, что я ему помог - частично автоматизируя процесс с помощью PowerShell. По моему опыту, как только файлы проекта были изменены, относительно легко изменить файлы решений вручную, поскольку они довольно упрощены, если предположить, что это только изменения, которые были изменены, а не GUID проекта или имена. Конечно, не стесняйтесь добавлять более полезный ответ. –

Смежные вопросы