У меня есть ws2008 x64 с vs2008.
Когда я установил мой по сравнению с на x64 (потому что у меня есть 64 бита dlls), и работайте, компиляция sgen говорит это
Попытка была предпринята для загрузки блока неверным форматом
VS takse sgen от C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\
и я думаю, что это должно взять его от C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\x64\
когда я беру версию на 64 бита sgen и помещаю его в C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\ (replace 32bit version). Я смог скомпилировать.
Что я должен сделать для указания на правильную версию sgen под по сравнению с.
Я могу так или иначе настроить solutinon платформы для одного проекта указать на корректный sgens (для x86 к 32 битам и для x64 к 64 битам sgen версия)?
Это лучший ответ, который я смог найти: Условная команда события после сборки для x64 sgen , сообщение в блоге Майкла Хейнса .
Используйте событие пост-сборки, которое условно проверяет, установлен ли 64-битный SGEN, и используйте его при необходимости:
REM Use the 64-bit sgen from the Win 2008 and
REM .NET 3.5 SDK in a 64-bit dev environment
REM ProgramFiles variable is set to
REM 'Program Files (x86)' in a x64 environment
REM Processor_Architecture variable returns x86
REM in both an x86 and x64 environment within VS.
if /I "%ProgramFiles%" == "C:\Program Files" (
set SgenToolPath="C:\Program Files\Microsoft
SDKs\Windows\v6.0A\Bin\sgen.exe"
) else (
set SgenToolPath="C:\Program Files\Microsoft
SDKs\Windows\v6.1\Bin\x64\sgen.exe"
)
%SgenToolPath% /compiler:"\"/keyfile:$(ProjectDir)
MyKeyFile.snk"\" /force "$(TargetPath)"
Это предназначено для замены раскрывающегося меню «Создать сборки сериализации» для параметра «Вкл.» Для данный проект Visual Studio.
Добавьте небольшое действие перед сборкой, чтобы выгрузить переменные окружения, которые действуют во время сборки.
Проверьте vcvarsall.bat и следуйте ему, пока он загружает другие bat-файлы для различных комбинаций хоста / платформы сборки.
Проверить фактическую разрядность процесса devenv (например, с помощью проводника процесса).
Помогло ли вам это? Взгляните на раздел, где он использует sgen как постбилд:
Как следствие, вам нужно добавить команду SGen как пользовательское событие постбилда на вкладке Build Events свойств вашего VS проекта:
"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sgen.exe" /force /assembly:"$(TargetPath)" /compiler:/keycontainer:VS_KEY_5EFB7881D71082EDCF85DBBFCD748B9A /compiler:/delaysign-