从Visual Studio中,我可以通过右键单击 -> 构建来构建几个项目,这些项目被分组到解决方案文件夹中。
是否有任何命令行/PowerShell替代方法?
从Visual Studio中,我可以通过右键单击 -> 构建来构建几个项目,这些项目被分组到解决方案文件夹中。
是否有任何命令行/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文件以查找文件夹。
更新
以下代码将解析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
}
project|% dte|% solution|? projectname -eq NewFolder1|% projectitems|% object|% {msbuild $_.fullname}