2013-03-22 63 views
1

對於我們的企業應用程序,我們有一些程序集被引用爲dll和其他被引用爲項目的程序集。引用爲項目的程序集的運行時版本解決方案

對於作爲dll文件所引用的那些,我們已經改變了「特定版本」的設置是錯誤的。

爲項目所引用的那些不具備這樣的設置。如果我們必須將修補程序部署到其中一個引用的項目程序集,那麼運行時將如何知道要搜索的版本? 我們是否也必須部署主項目?

回答

4

關鍵的一點需要明白 - 是「特定版本」無關與應用程序的行爲在運行時 - 它不會影響在.NET運行時解析組件的方式。

所有「特定版本」都會告訴Visual Studio(而不是編譯器),當項目加載到IDE中時,如果DLL引用在可解析位置不可用,是否接受不同版本的相同的DLL。 如果「特定版本」設置爲TRUE,並且您卸載/刪除項目的一些依賴項,Visual Studio將在解決方案資源管理器中的該引用上放置一些感嘆號。如果「特定版本」設置爲FALSE,並且該DLL的另一版本可用(假設VS可以找到它),那麼Visual Studio將回退到引用該DLL。當然,這隻會在下次構建時顯現出來......您的新輸出將引用「回退DLL」。

然而,結果輸出是相同的,因爲無論您的項目在編譯時引用的DLL版本是在運行時都需要的DLL版本 - 它不能被另一個版本(我是,當然,這裏只提到強命名的DLL,而忽略了explicitly declared version redirection)。

這對於您的特定場景意味着什麼 - 在不使用特定版本的情況下 - 您需要跟蹤項目在編譯時的依賴關係(Excel Spreadsheet任何人?Yuck ...)因爲你不能保證你是否在你的源代碼管理中查看,那麼項目所引用的版本就是真正被編譯到項目中的版本。當然,你應該保留所有你釋放的二進制文件到野外,這樣你可以檢查那些看到什麼部署給客戶...

要回答你的問題 - 不,你不必部署的主要項目 - 你只需要知道那些依賴項目的版本,在你部署了他們的時間,這樣你就可以建立一個兼容燙...

  • 兼容:在DLL看起來是一樣的從外面看,相同的類/屬性/方法等
  • hot-fix:保持組裝版本與野外版本相同) -

...或者編寫一個新DLL,並執行程序集綁定從舊版本重定向到新版本。

+0

謝謝!這有助於.. – Codex 2013-03-28 12:03:39

相關問題