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ê?

questionAnswers(0)

yourAnswerToTheQuestion