2012-11-22 31 views
1

我們有一個使用Process.Start運行msbuild的網頁,我們提供一個msbuild文件來處理。在exec任務上msbuild訪問被拒絕,但只有4.0

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。

我們已經繞過了瘋狂的特權到exes和路徑都無濟於事。任何幫助將不勝感激。

回答

2

這個問題與64bit與32bit有關。而它「在我的機器上運行!」並在其他服務器上很好,在一些服務器上我們遇到了這裏列出的問題。所有的測試機器都是64位的,但有些有問題,有些則沒有。最終,修復很簡單:

我們需要調用:

C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ msbuild.exe

,不再撥打電話:

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

我們永遠無法弄清楚究竟是原因,或者爲什麼它的工作的一些服務器,但沒有其他人。但是這個簡單的改變對所有人都有效,所以我們很高興!

不知道這是否合適,但是要給出應有的功勞......我們在Rackspace的支持讓我們想到了!

+1

+1:永遠獎勵找到答案。 – leppie