【发布时间】:2012-05-01 23:45:17
【问题描述】:
我同时使用 VS2008 和 VS2010 处理不同的项目。最近我尝试为实体项目生成序列化程序集,但无法通过 Visual Studio 2010 生成相同的程序集。这会引发以下错误:
An attempt was made to load an assembly with an incorrect format: X:\Dev\Proj\X.Entities\bin\Debug\X.entities.dll.
这是我为实体项目设置的构建后事件
"$(FrameworkSDKDir)\Bin\sgen" /nologo /force $(TargetFileName)
copy "$(TargetDir)X.Entities.Serializer.dll" "$(SolutionDir)\X.Site\Bin"
我能够从 VS 2010 命令行生成 Serializer dll。 对于VS2008项目;线路工作正常。但是,错误出现在 VS2010 项目上!
VS2010 有不同的FrameworkSDKDir 变量吗?如果没有,如何修改它以同时用于 VS2010 和 VS2008 项目?
顺便说一句,我使用 win 2008 Server 32 位操作系统,IIS 7 进行开发。
【问题讨论】:
-
VS2010中有4个版本的sgen.exe。 32 位与 64 位以及 CLR 2 与 CLR 4 的组合。我猜您正在获取 .NET 4 版本并尝试将其加载到针对 CLR 2 的项目中。
-
@HansPassant:所有项目都设置为 4.0 框架,因此我不认为它正在尝试加载 CLR 2。即使它指向,我该如何更改?
-
首先你必须确定问题,然后你可以考虑修复它。使用 ildasm.exe 验证您的假设,它会在清单中显示预期的 CLR 版本。
标签: visual-studio-2010 visual-studio-2008 sgen