2012-08-01 76 views
0

我在Visual Studio 2010中构建了一个64位C#.NET DLL。我的项目的构建后步骤包括运行sgen.exe以为我的程序集生成相应的XmlSerializer DLL。 (我试图加载一个CLR函数到SQL Server 2012中。该函数执行一些XML序列化。)XML串行器生成器工具(Sgen.exe)生成64位Windows DLL?

有没有一种方法可以用任何版本的sgen.exe生成64位代码?或者是否有我应该安装的特定Windows SDK?似乎无法找到下载网站。

回答

3

您可以通过下于/ C参数#编译器选项:

sgen.exe /c:/platform:x64 

,但不知道它是有道理的MSIL

+0

谢谢你。我错过了“/ c”和“/ platform”之间的“:”。我仍然无法在将在SQL 2012中工作的64位框中构建C#用户定义函数(UDF)DLL和随附的XML序列化程序DLL。(如果我在32位框中构建它们,则工作正常)。 – Buggieboy 2012-08-01 22:11:58

1

通过查看sgen内置的XML序列化程序集应建为AnyCPU,等会在x86上运行32位,在x64上运行64位。是否有一个原因需要强制它到x64?

+0

是。这是因为我试图执行http://support.microsoft.com/kb/913668,它将64位CPU上的XmlSerializers DLL加载到SQL 2012中。 – Buggieboy 2012-08-01 22:05:54

+0

@Buggieboy因为序列化程序集是作为AnyCPU构建的,所以它们可以在32位和64位机器上本地加载和运行。该DLL只包含MSIL,然后根据它加载的体系结构将其打印到适当的x86或x64指令中。 – Iridium 2012-08-02 07:00:41