带有VS2012的Windows 8上的msbuild.exe位置

时间:2013-06-30 20:46:01

标签: visual-studio-2012 windows-8 msbuild jenkins continuous-integration

我正在尝试设置一个Jenkins CI服务器来部署.NET 4.5应用程序,但我不能在我的生活中找到运行visual studio 2012的Windows 8机器上的msbuild exe。有什么想法吗?

3 个答案:

答案 0 :(得分:18)

确保已安装相应的.Net框架。 您可以按照此示例路径找到 build.exe

C:\Windows\Microsoft.NET\Framework\v4.5\MSBuild.exe

答案 1 :(得分:1)

找到MSBuild的正确方法是使用注册表。

这是一个寻找特定版本的.exe

的powershell实现
$regKey = "HKLM:\SOFTWARE\Microsoft\MSBuild\ToolsVersions\${Version}"
$itemProperty = Get-ItemProperty $RegKey -ErrorAction SilentlyContinue
if ($itemProperty -ne $null -and $itemProperty.MSBuildToolsPath -ne $null)
{
     $msBuildPath = Join-Path $itemProperty.MSBuildToolsPath -ChildPath "MsBuild.exe"
}

答案 2 :(得分:0)

我不喜欢其他任何答案。因为在#include <stdio.h> #include <stdlib.h> int main (void) { int n, q; /* validate EVERY input */ if (scanf("%d%d", &n, &q) != 2 || n <= 0 || q <= 0) { fputs ("error: invalid format or value.\n", stderr); return 1; } int *p_arr[n]; /* array of n-pointers to int */ for (int i = 0; i < n; i++) { int tmp; if (scanf("%d", &tmp) != 1 || tmp <= 0) { /* validate! */ fputs ("error: invalid input - tmp.\n", stderr); return 1; } int *tmp_arr = calloc (tmp, sizeof *tmp_arr); /* allocate */ if (!tmp_arr) { /* validate every allocation */ perror ("calloc-tmp_arr"); return 1; } p_arr[i] = tmp_arr; for (int j = 0; j < tmp; j++) { int value; if (scanf("%d", &value) != 1) { /* validate! */ fputs ("error: invalid input - value.\n", stderr); return 1; } p_arr[i][j] = value; printf ("%d ", p_arr[i][j]); } putchar ('\n'); /* no need to printf a single-character */ } for (int i = 0; i < q; i++) { int row, col; /* validate! */ if (scanf ("%d%d", &row, &col) != 2 || row < 0 || col < 0) { fputs ("error: invalid input, row or col.\n", stderr); return 1; } printf ("%d %d\n%d\n", row, col, p_arr[row][col]); } for (int i = 0; i < n; i++) free (p_arr[i]); return 0; } 或注册表中,您无法找到与Visual Studio一起安装或作为构建工具单独安装的新msbuild版本。最好的方法是使用C:\Windows\Microsoft.NET\Framework\ find msbuild