1

Process.Startを使用してmsbuildを実行するWebページがあり、処理する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を使用する必要があることです。

私たちは、exeに狂ったような特権を与えたり、パスをすべて無駄にしたりしました。どんな助けでも大歓迎です。

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 に答える