Из Visual Studio Я могу создать несколько проектов, сгруппированных по папке с помощью правой кнопки мыши -> Сборка.Как создать папку VS-решения из powershell
Есть ли командной строки/мощность альтернативной оболочки для этого?
Из Visual Studio Я могу создать несколько проектов, сгруппированных по папке с помощью правой кнопки мыши -> Сборка.Как создать папку VS-решения из powershell
Есть ли командной строки/мощность альтернативной оболочки для этого?
На скриншоте выше только сделайте следующее:
cd [directory with WindowsFormsApplication1.sln]
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
Powershell просто "консоль". Для построения sln или csproj вам необходимо указать msbuild.exe, который является инструментом для построения .NET-проектов.
Если вы хотите только создать одну папку решений из sln, это не так просто, потому что папки в Visual Studio являются виртуальными, и вам нужно проанализировать SLn файл, чтобы найти папки
Update
следующий код будет разбирать Sln файл и запустить MSBuild для проекта, который принадлежит к папке:
param([string]$slnPath=".\YourSLN.sln", [string]$VsFolderName="Your_folder")
$slnContent = Get-Content $slnPath
$folderLine = $slnContent | ?{$_.Contains("2150E333-8FDC-42A3-9474-1A3956D46DE8")} | ?{$_.Contains($VsFolderName)}
$guid = $folderLine.Split(", ")[-1].Replace('"',"")
#Write-host $guid
$csprojGuids = $slnContent | ?{$_.Contains("= "+$guid)} | %{$_.Split("=")[-2].Trim()}
#Write-Host $csprojGuids
for($i=0; $i -lt $csprojGuids.count; $i++){
$toFind = $csprojGuids[$i]
$def = $slnContent | ?{$_.Contains("Project")} | ?{$_.Contains($csprojGuids[$i])} | %{$_.Split(",")[-2].Trim().Replace('"','')}
Write-Host "building" $def
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe $def
}
В решении есть несколько сотен проектов, поэтому мне нужно развернуть сборку в одну конкретную папку, чтобы ускорить процесс. –
@VladimirSachek Я добавил полный код в powershell –
Вы можете использовать DTE для получения путей проектов, а затем передать их в msbuild. Запустите это из консоли диспетчера пакетов (предположим, что msbuild находится в вашем% path%):
project|% dte|% solution|? projectname -eq NewFolder1|% projectitems|% object|% {msbuild $_.fullname}
, это именно то, что мне нужно, но есть ли шанс запустить его за пределами Visual Studio? –
@VladimirSachek Взгляните на [StudioShell] (https://studioshell.codeplex.com), иначе вы можете получить доступ к DTE извне VS без специального расширения. У меня есть код C#, поэтому дайте мне знать, если StudioShell не будет работать. – mtman
msbuild.exe - ваш друг, не так ли? –