2011-12-28 65 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,但我需要從bin中始終加載10.50。

所以,我有以下情況:

Bin -> 10.50.2500.0 
GAC -> 10.0.1600.22 

當我的應用程序正在運行,從GAC大會被加載,然後從箱子被忽略。

如何防止此類行爲?非常感謝。

+0

CLR只關注[AssemblyVersion],文件版本被忽略。因此,GAC中的人員總是首先被發現並被接受。如果這真的很重要,你必須卸載它。 – 2011-12-28 20:41:45

回答

1

這是所有關於嚴格版本。你引用的是dll版本爲10.50.2500.0,但你並沒有說它應該完全是這個版本。

因此,您需要做的是在您引用的程序集的屬性中將特定版本設置爲true。這將保證這個版本將被加載

+0

強類型與特定版本的引用程序集有什麼關係? – 2011-12-28 16:42:11