从Visual Studio我可以通过右键单击 - >构建按解决方案文件夹分组的多个项目。建立。
是否有替代命令行/电源shell?
答案 0 :(得分:3)
在上面的屏幕截图中,只需执行以下操作:
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
}
答案 1 :(得分:1)
您可以使用DTE获取项目路径,然后将它们传递给msbuild。从程序包管理器控制台运行此命令(假设msbuild在您的%path%中):
project|% dte|% solution|? projectname -eq NewFolder1|% projectitems|% object|% {msbuild $_.fullname}