Использование XdcMake с Windows 7.1 SDK - PullRequest
0 голосов
/ 04 августа 2011

Проблема

У меня проблемы с использованием XdcMake для генерации XML-документации в проекте C ++ в Visual Studio 2010 с использованием Windows 7.1 SDK.

Использование Visual Studio 7.0A SDK (v100)XdcMake работает нормально, но с Windows 7.1 SDK (v7.1) при сборке появляется следующее сообщение об ошибке:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(775,5): error MSB6006: "xdcmake.exe" exited with code -1073741701."

При сборке через консоль MSBuild появляется дополнительное диалоговое окно с сообщением об ошибке:

xdcmake.exe - Application Error
The application was unable to start correctly (0xc000007b). Click OK to close the application.

Вопрос

Поэтому мой вопрос заключается в том, работает ли XdcMake для кого-либо еще с SDK V7.1, и если да, то что может быть не так в моем случае.

Диагностика

Код ошибки 0xc000007b предполагает, что существует некоторая несоответствующая исполняемая архитектура.Диагностический вывод MSBuild определяет сбойную команду как:

Task "XDCMake"
 D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe /old "XdcTest" /nologo /Fo"D:\XdcTest\Test-v7.1\XdcTest.xml" /Fs"Test-v7.1\main.xdc"
 Tracking command:
 D:\Program Files\Dev\Sdk\Windows\v7.1\bin\NETFX 4.0 Tools\Tracker.exe /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /i D:\XdcTest\Test-v7.1 /r D:\XDCTEST\TEST-V7.1\MAIN.XDC /b MSBuildConsole_CancelEvent04ce1cba7b0043f99e27c7ca7d5a58e5 /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe" /old "XdcTest" /nologo /Fo"D:\XdcTest\Test-v7.1\XdcTest.xml" /Fs"Test-v7.1\main.xdc"
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(775,5): error MSB6006: "xdcmake.exe" exited with code -1073741701. [D:\XdcTest\XdcTest.vcxproj]

Я экспериментировал как с упомянутыми Windows SDK, так и с настройками платформы и заметил следующие выполненные команды (сокращенно):

[x] dev10_x64-v100-Win32.txt:  "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64\Tracker.exe" /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe"
[x] dev10_x64-v100-x64.txt:    "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64\Tracker.exe" /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\AMD64\xdcmake.exe"
[x] dev10_x86-v100-Win32.txt:  "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64\Tracker.exe" /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe"
[x] dev10_x86-v100-x64.txt:    "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64\Tracker.exe" /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe"
[ ] dev10_x64-v7.1-Win32.txt:  "D:\Program Files\Dev\Sdk\Windows\v7.1\bin\NETFX 4.0 Tools\Tracker.exe"                   /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe"
[x] dev10_x64-v7.1-x64.txt:    "D:\Program Files\Dev\Sdk\Windows\v7.1\bin\NETFX 4.0 Tools\x64\Tracker.exe"               /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\amd64\xdcmake.exe"
[ ] dev10_x86-v7.1-Win32.txt:  "D:\Program Files\Dev\Sdk\Windows\v7.1\bin\NETFX 4.0 Tools\Tracker.exe"                   /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe"
[ ] dev10_x86-v7.1-x64.txt:    "D:\Program Files\Dev\Sdk\Windows\v7.1\bin\NETFX 4.0 Tools\Tracker.exe"                   /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\BIN\xdcmake.exe"

An "x" denotes a working combination. "dev10_x64" is a shell prepared with "vcvarsall.bat amd64", and "dev10_x86" with "vcvarsall.bat x86".

Что я собираюиз этого следует, что при использовании SDK v7.1, который не запускает xdcmake.exe, выбран неправильный tracker.exe (кроме одного случая).Тестирование различных комбинаций подтверждает, что x86 tracker + x86 filetracker запускает собственные / управляемые программы x86, x64 tracker / x64 filetracker запускает собственную / управляемую x64 и управляемый AnyCPU.И поскольку xdcmake.exe является управляемым exe-файлом AnyCPU, а я запускаю 64-разрядную версию Windows, для нее требуется 64-разрядный трекер.

Я безуспешно переустановил Windows 7.1 SDK и просмотрел установленные файлы MSBuild.для проектов C ++ ничего полезного для меня не выявлено.Я могу жестко закодировать x64 Tracker.exe в C:\Program Files (x86)\MSBuild\4.0\Microsoft.NETFramework.targets\ImportAfter\Microsoft.NetFramework4.Windows7.1SDK.props, но это кажется неправильным.

Шаги для воспроизведения

Вот небольшой проект для проверки этого: http://dl.dropbox.com/u/37016844/XdcTest.zip

Включает две конфигурации: Test-v7.1 для 7.1 Windows SDK и Test-v100 для 7.0A SDK.Как показано в первом посте, единственная работающая комбинация с V7.1 - это Platform = x64 с использованием цепочки инструментов x64.

msbuild XdcTest.sln -p:Configuration=Test-v7.1 -p:Platform=Win32 -t:Rebuild
msbuild XdcTest.sln -p:Configuration=Test-v7.1 -p:Platform=x64 -t:Rebuild
msbuild XdcTest.sln -p:Configuration=Test-v100 -p:Platform=Win32 -t:Rebuild
msbuild XdcTest.sln -p:Configuration=Test-v100 -p:Platform=x64 -t:Rebuild

Для справки здесь приведены файлы с их архитектурой, версией и хешем SHA1:

                  Arch            Version       SHA1                                      Path
Tracker.exe
 v7.0a-x86      : Native-x86      4.0.30319     3bf12583e8c69de866cd9f8532f449bed3a46443  C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\Tracker.exe
 v7.0a-x64      : Native-x64      4.0.30319     7cc65c574e8dcb1f3ff384357d0b0955b8bd4405  C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64\Tracker.exe
 v7.1-x86       : Native-x86      4.0.30319     3bf12583e8c69de866cd9f8532f449bed3a46443  D:\Program Files\Dev\Sdk\Windows\v7.1\bin\NETFX 4.0 Tools\Tracker.exe
 v7.1-x64       : Native-x64      4.0.30319     7cc65c574e8dcb1f3ff384357d0b0955b8bd4405  D:\Program Files\Dev\Sdk\Windows\v7.1\bin\NETFX 4.0 Tools\x64\Tracker.exe
FileTracker.dll
 v4.0.30319-x86 : Native-x86      10.0.30319.1  328c1e7449612c354063a3c761577bab9f1cc2ab  C:\Windows\Microsoft.NET\Framework\v4.0.30319\FileTracker.dll
 v4.0.30319-x64 : Native-x64      10.0.30319.1  883bc6d0c64e315d6b80733ac8fb9cec8c5cf57d  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll
xdcmake.exe
 dev10-x86      : Managed-AnyCPU  10.00.30319   8c9b7e31a80bf81488464dd106e6ecec097a47cb  D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe
 dev10-x64      : Managed-AnyCPU  10.00.30319   22910925f1eff9491ddde1166ed32956a98963bd  D:\Program Files\Dev\Visual Studio\10.0\VC\bin\amd64\xdcmake.exe

ОС представляет собой 64-разрядную версию Windows 7 Professional (6.1.7601 с пакетом обновления 1, сборка 7601);с VS2010 Ultimate SP1.

1 Ответ

1 голос
/ 25 января 2012

Microsoft подтвердила, что это ошибка на платформе x64, и в качестве обходного пути они предлагают не использовать xdcmake - http://connect.microsoft.com/VisualStudio/feedback/details/459478/upgraded-project-causes-error-in-xdcmake-exe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...