我有ws2008 x64和vs2008。
当我将vs设置为x64 (因为我有64位的dll)并运行编译时,sgen会说
试图加载格式不正确的程序集
VS takse sgen位于C:\Program Files\Microsoft SDK\Windows\v6.0A\bin\
我认为应该从C:\Program Files\Microsoft SDK\Windows\v6.0A\bin\x64\
当我获取64位版本的sgen并将其放入C:\Program Files\Microsoft SDK\Windows\v6.0A\bin\(替换32位版本)。我能够编译。
我应该怎么做才能在vs.
我是否可以通过某种方式为一个项目配置解决方案平台,使其指向正确的源(对于32位版本的x86和64位版本的x64 )?
发布于 2010-08-18 02:10:16
这是我能找到的最好的答案:Michael Hanes的博客文章Conditional Post-Build Event Command for 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项目的“打开”的“生成序列化程序集”下拉设置。
发布于 2010-08-12 05:01:02
这对你有帮助吗?看一看他uses sgen as a post build的部分
因此,您需要将SGen命令作为自定义构建后事件添加到VS项目属性的Build Events选项卡上:
:
"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sgen.exe" /force /assembly:"$(TargetPath)" /compiler:/keycontainer:VS_KEY_5EFB7881D71082EDCF85DBBFCD748B9A /compiler:/delaysign-
发布于 2010-08-12 20:49:32
添加一些预编译操作,只是为了转储在编译时有效的环境变量。
检查vcvarsall.bat并跟踪它,因为它为不同的主机/构建平台组合加载了其他bat-s。
检查devenv进程的实际位数(比如使用进程资源管理器)。
https://stackoverflow.com/questions/1980278
复制相似问题