2011-12-28 3 views
2

У меня есть проект, который использует файл Microsoft.SqlServer.SMO.dll, который всегда копирует в каталог bin (для параметра CopyLocal установлено значение true).Решение для определения местоположения сборки C#

Однако могут быть установлены различные версии SQL SMO. У Thay такая же версия сборки (10.0.0.0), но разные версии файлов (10.0.1600.22 и 10.50.2500.0). Конечный пользователь, возможно, установил более старую версию сборки в GAC, но мне нужно всегда загружать 10.50 из bin.

Итак, у меня есть следующая ситуация:

Bin -> 10.50.2500.0 
GAC -> 10.0.1600.22 

Когда мое приложение работает, сборка из GAC загружена, и из бункера игнорируется.

Как предотвратить такое поведение? Большое спасибо.

+0

CLR обращает внимание только на [AssemblyVersion], версия файла игнорируется. Таким образом, в GAC всегда найдется первая и принятая. Вам придется удалить его, если это действительно имеет значение. –

ответ

1

Вы можете предоставить свой собственный манифест для приложения, чтобы сообщить ему, что вы хотите явно использовать местоположение «bin». Это тема среднего размера, но это хорошая ссылка, которая поможет вам начать.

http://msdn.microsoft.com/en-us/library/1w45z383.aspx

1

Это все о строгой версионности. Вы ссылаетесь на версию dll версии 10.50.2500.0, но вы не говорите ничего, что она должна быть именно ЭТОЙ версией.

Так что вам нужно будет установить определенную версию в true в свойствах сборки, на которую вы ссылаетесь. Это гарантирует, что именно эта версия будет загружена.

+0

Что такое сильная типизация для конкретных версий ссылочных сборок? –

Смежные вопросы