sgen.exe x64 .net c# перестал работать с “блоком с неверным форматом”

У меня есть 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 версия)?

12
задан ashes999 28 May 2015 в 18:07
поделиться

3 ответа

Это лучший ответ, который я смог найти: Условная команда события после сборки для 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.

3
ответ дан 2 December 2019 в 22:22
поделиться

Добавьте небольшое действие перед сборкой, чтобы выгрузить переменные окружения, которые действуют во время сборки.

Проверьте vcvarsall.bat и следуйте ему, пока он загружает другие bat-файлы для различных комбинаций хоста / платформы сборки.

Проверить фактическую разрядность процесса devenv (например, с помощью проводника процесса).

2
ответ дан 2 December 2019 в 22:22
поделиться

Помогло ли вам это? Взгляните на раздел, где он использует 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-

4
ответ дан 2 December 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: