SQL Server "версия, культура или несоответствие открытого ключа" во время "создания сборки" при загрузке XMLSerializer, созданных с помощью утилиты sgen - PullRequest
2 голосов
/ 04 августа 2010

Я пытаюсь создать функцию CLR в SQLServer, которая вызывает веб-сервис. Когда я создаю первую сборку, AssemblyVersion в AssemblyInfo.cs равен 1.0. *. Я запущу sgen, чтобы создать сопровождающую сборку XMLSerializer, и не вижу там никаких проблем.

>"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 первая сборка загружается нормально, но я получаю следующую ошибку при попытке загрузить сборку XMLSerializer:

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. Действительно ли это является причиной ошибки, и если да, то почему сборка XMLSerializer ссылается на неправильный номер версии?

Ответы [ 2 ]

3 голосов
/ 22 ноября 2012

Если вы используете сервер x64 SQL, проверьте, является ли цель вашего проекта сборкой для платформы Any CPU.Я столкнулся с той же проблемой и сделал следующую таблицу:

A1 ссылочной сборки;Ссылки А2.

A1 \ A2   x86   x64   Any CPU
x86        X     V     X
x64        V     V     V
Any CPU    V     V     V
3 голосов
/ 23 февраля 2012

У меня была эта проблема, и я в конце концов решил ее.Я ссылался на сборку x86 на 64-битном сервере.Я перестроил указанную сборку как Любой ЦП, установленный на сервере, повторно добавил ссылку на проект, перестроил свой проект как Любой ЦП, и затем SQL Server сможет разрешить ссылку и установить сборку.

Сообщение "Вы ссылаетесь на сборку, созданную для неправильной платформы" было бы весьма полезным:)

...