2

我正在尝试在 SQLServer 中创建一个调用 Web 服务的 CLR 函数。当我创建第一个程序集时,AssemblyInfo.cs 中的 AssemblyVersion 是 1.0.*。我将运行 sgen 来创建随附的 XMLSerializers 程序集,我没有看到任何问题。

>"C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\sgen.exe" /force /assembly:Ra
elen.DemoCLRFunction.dll
Microsoft (R) Xml Serialization support utility
[Microsoft (R) .NET Framework, Version 2.0.50727.3038]
Copyright (C) Microsoft Corporation. All rights reserved.
Serialization Assembly Name: Raelen.DemoCLRFunction.XmlSerializers, Version=1.0.
3868.13304, Culture=neutral, PublicKeyToken=null.
Generated serialization assembly for assembly C:\dev\freight-workspace\Raelen.De
moCLRFunction\Raelen.DemoCLRFunction\bin\Debug\Raelen.DemoCLRFunction.dll --> 'C
:\dev\freight-workspace\Raelen.DemoCLRFunction\Raelen.DemoCLRFunction\bin\Debug\
Raelen.DemoCLRFunction.XmlSerializers.dll'.

在 SQLServer 中,第一个程序集加载正常,但尝试加载 XMLSerializers 程序集时出现以下错误:

Msg 10300, Level 16, State 2, Line 7
Assembly 'Raelen.DemoCLRFunction.XmlSerializers' references assembly 
'raelen.democlrfunction, version=0.0.0.0, culture=neutral, publickeytoken=null.',
which is not present in the current database. SQL Server attempted to locate and
automatically load the referenced assembly from the same location where 
referring assembly came from, but that operation has failed (reason: version, 
culture or public key mismatch). Please load the referenced assembly into the 
current database and retry your request.

我不知道为什么它试图引用版本 0.0.0.0。这确实是错误的原因吗?如果是,为什么 XMLSerializers 程序集引用了错误的版本号?

4

2 回答 2

3

如果您正在运行 x64 SQL 服务器,请检查您的项目构建目标是否为 Any CPU 平台。我也遇到了同样的问题,做了下表;

A1 引用的程序集;A2 参考资料。

A1 \ A2   x86   x64   Any CPU
x86        X     V     X
x64        V     V     V
Any CPU    V     V     V
于 2012-11-22T17:50:39.243 回答
3

我遇到了这个问题,我最终解决了。我在 64 位服务器上引用 x86 程序集。我将引用的程序集重建为 Any CPU,安装在服务器上,重新添加对项目的引用,将我的项目重建为 Any CPU,然后SQL Server 可以解析引用并安装程序集。

类似于“您正在引用为错误平台构建的程序集”的消息会非常有用:)

于 2012-02-23T18:16:15.253 回答