2010-08-04 13 views
2

Je tente de créer une fonction CLR dans SQLServer qui appelle un service Web. Lorsque je crée le premier assembly, AssemblyVersion dans AssemblyInfo.cs est 1.0. *. Je vais lancer sgen pour créer l'assembly XMLSerializers qui l'accompagne, et je n'y vois aucun problème.SQL Server "version, culture ou incompatibilité de clé publique" lors de "create assembly" lors du chargement de XMLSerializers créé avec l'utilitaire sgen

>"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'. 

En SQLServer, la première charge l'ensemble très bien, mais je reçois l'erreur suivante en essayant de charger l'assemblage 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. 

Je ne peux pas comprendre pourquoi il essaie de la version de référence 0.0.0.0. Est-ce bien la cause de l'erreur, et si oui, pourquoi l'assembly XMLSerializers fait-il référence au mauvais numéro de version?

+0

Lorsque vous dites 'premier assemblage', voulez-vous dire 'raelen.democlrfunction'? – Rabid

+0

Et les ensembles sont-ils signés à l'aide d'une clé nommée forte? – Rabid

+0

Oui, par première assemblée, je fais référence à raelen.democlrfunction. C'est la DLL que j'ai utilisé sgen pour créer Raelen.DemoCLRFunction.XmlSerializers.dll. Aucun n'est signé avec une clé nommée forte. – bhnat

Répondre

3

J'ai eu ce problème et j'ai fini par le résoudre. Je référence un assembly x86 sur un serveur 64 bits. J'ai reconstruit l'assembly référencé comme Any CPU, installé sur le serveur, a ré-ajouté la référence au projet, reconstruit mon projet comme Any CPU, et puis SQL Server pourrait résoudre la référence et installer l'assembly.

Un message le long des lignes de « Vous faites référence à un ensemble qui est construit pour la mauvaise plate-forme » aurait été assez utile :)

3

Si vous utilisez contrôle du serveur SQL x64 si votre cible de construction du projet à la Toute plate-forme de CPU. J'ai rencontré le même problème et fait le tableau suivant;

A1 l'ensemble référencé; Références A2.

A1 \ A2 x86 x64 Any CPU 
x86  X  V  X 
x64  V  V  V 
Any CPU V  V  V