1

我们有一个使用 Process.Start 来运行 msbuild 的网页,我们为它提供了一个要处理的 msbuild 文件。

msbuild 脚本包含许多正常的 msbuild 任务,以及一个运行 hg.exe 的 Exec 任务。

当我们告诉 Process.Start 简单地运行“msbuild.exe”时,它工作正常。脚本执行完毕,hg.exe 运行,一切正常。

但是当我们告诉 Process.Start 运行“c:\specific-path-to-4.0\msbuild.exe”时它失败了。它确实尝试执行脚本,并且确实执行了一些任务,但它无法运行运行 hg.exe 的 Exec 任务。它给出了“拒绝访问”错误。

问题是,我们有一些需要 4.0 的任务,所以我们确实需要使用那个版本的 msbuild。

我们到处给前任和路径疯狂地赋予特权,但都无济于事。任何帮助将不胜感激。

4

1 回答 1

2

这个问题与 64 位和 32 位有关。而它“在我的机器上运行!” 在其他服务器上就好了,在某些服务器上我们遇到了这里列出的问题。所有的测试机器都是 64 位的,但有些有问题,有些没有。最后,修复很简单:

我们需要调用:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe

而不是调用:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe

我们永远无法弄清楚究竟是什么原因,或者为什么它在某些服务器上起作用而在其他服务器上不起作用。但这个简单的改变适用于所有人,所以我们很高兴!

不确定这是否合适,但要在应得的地方给予赞扬......我们在 Rackspace 的狂热支持为我们解决了这个问题!

于 2012-11-27T17:45:07.513 回答