Sto tentando di creare un progetto utilizzando MSBuild (v4.0) su un computer a 64 bit. Per qualche motivo, MSBuild sta tentando di caricare un'estensione a 32 bit e non riesco a capire perché. Ho ridotto il problema al set più piccolo al fine di dimostrare il problema.Perché MSBuild a 64 bit carica estensioni a 32 bit?
Utilizzando il seguente file di progetto MSBuild:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<Target Name="test">
<Message Text="bin path: $(MSBuildBinPath)" />
<Message Text="extensions path: $(MSBuildExtensionsPath)" />
<Message Text="extensions path (x86): $(MSBuildExtensionsPath32)" />
<Message Text="extensions path (x64): $(MSBuildExtensionsPath64)" />
</Target>
</Project>
ottengo questo output:
Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation 2007. All rights reserved.
Build started 8/27/2010 9:56:35 AM.
Project "D:\5\test.proj" on node 1 (default targets).
test:
bin path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319
extensions path: C:\Program Files (x86)\MSBuild
extensions path (x86): C:\Program Files (x86)\MSBuild
extensions path (x64): C:\Program Files\MSBuild
Done Building Project "D:\5\test.proj" (default targets).
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:00.03
MSBuild ovviamente sa circa il percorso a 32bit e 64bit estensioni, e dal percorso binario sembra chiaro che Sto eseguendo il 64-bit MSBuild.exe, ma per qualche motivo ritiene che le estensioni dovrebbero essere caricate da Program Files (x86)
anziché da Program Files
. Questo mi crea problemi, poiché ho un'estensione che ho bisogno di caricare, che DEVE essere caricata correttamente in un processo a 32 bit/64 bit, e non verrà caricata (MSBuild sta tentando di caricare la versione a 32 bit in un processo a 64 bit).
Perché?