Por que o MSBuild de 64 bits está carregando extensões de 32 bits?
Estou tentando criar um projeto usando o MSBuild (v4.0) em uma máquina de 64 bits. Por alguma razão, o MSBuild está tentando carregar uma extensão de 32 bits e não consigo entender o porquê. Reduzi o problema ao menor conjunto para demonstrar o problema.
Usando o seguinte arquivo de projeto 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>
Eu recebo esta saída:
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
O MSBuild obviamente conhece o caminho das extensões de 32 bits e 64 bits e, pelo caminho binário, parece claro que estou executando o MSBuild.exe de 64 bits, mas, por algum motivo, acredita que as extensões devem ser carregadas deProgram Files (x86)
ao invés deProgram Files
. Isso está me causando problemas, pois tenho uma extensão que preciso carregar, que DEVE ser carregada corretamente em um processo de 32 bits / 64 bits e não será carregada (o MSBuild está tentando carregar a versão de 32 bits em um processo de 64 bits).
Por quê?