sgen.exe x64 .net c#失败,"程序集格式不正确"

Dar*_*qer 12 c# 64-bit sgen visual-studio

我和vs2008有ws2008 x64.

当我将我的vs设置为x64(因为我有64位dll)并运行编译sgen说

尝试加载格式不正确的程序集

来自C:\ Program Files\Microsoft SDKs\Windows\v6.0A\bin \的VS takse sgen

我认为它应该从C:\ Program Files\Microsoft SDKs\Windows\v6.0A\bin\x64 \

当我使用64位版本的sgen并将其放入C:\ Program Files\Microsoft SDKs\Windows\v6.0A\bin \(替换32位版本).我能够编译.

我该怎么做才能指出正确的sgen版本

我可以以某种方式为一个项目配置solutinon平台以指向正确的sgens(对于x86到32位和x64到64位sgen版本)?

Mik*_*las 3

这是我能找到的最佳答案:Conditional Post-Build Event Command for x64 sgen , Michael Hanes的博客文章。

使用构建后事件,有条件地检查是否安装了 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)"
Run Code Online (Sandbox Code Playgroud)

这旨在替代给定 Visual Studio 项目的“生成序列化程序集”下拉设置“打开”。