2013-02-22 55 views
1

我有一個Ektron 8.2網站,我試圖將Quartz.NET集成到它中,以便運行一些調度。 Quartz.NET需要一個庫Common.Logging。該庫引入衝突並破壞App_Code/VBCode中的Ektron代碼。ASP.Net Ektron app_code和庫之間的庫名衝突

E.g.從Utilities.vb下面的代碼

Case Is = Common.EkEnumeration.FolderType.Community 
     imageURL &= "images/ui/icons/folderCommunity.png" 
Case Common.EkEnumeration.FolderType.Catalog 
     imageURL &= "images/ui/icons/folderGreen.png" 

現在給一個編譯時錯誤 -

App_Code\VBCode\Utilities.vb(703,0): error BC30456: 'EkEnumeration' is not a member of 'Common'. 

看來,Common.Logging與Ektron.Cms.Common發生衝突(在曄文件具有Imports Ektron.Cms聲明)。是否可以指定庫的優先級?或命名空間導入的庫?

更新 Utilities.vb代碼由Ektron編寫。我想要麼不對這個代碼做任何修改,也不要做任何微小的修改,因爲任何修改都需要在Ektron升級時重新完成。這實際上是兩個庫之間的衝突 - Ektron和Quartz.Net。我可以在不更改任一庫的代碼的情況下解決此衝突嗎?是否存在別名庫的配置設置?

回答

1

一個簡單的解決方案是使用完整的命名空間Ektron.Cms.Common.EkEnumeration,而不是依靠include來自動排序。

Case Is = Ektron.Cms.Common.EkEnumeration... 

不優雅,但應該讓你再次合作。

+0

謝謝,但更新的問題解釋說,我寧願要麼不改變曄代碼,或者至少將更改最小化。使用完整的名稱空間需要對Ektron代碼進行很多更改。 – Spongeboy 2013-02-26 06:12:02

+0

明白了。沒有意識到這是Ektron的代碼拋出錯誤。 – egandalf 2013-02-26 18:21:05

0

另一種方法是使用namespace alias

using EkCommon = Ektron.Cms.Common; 

所以,你的代碼反而會看起來像:

EkCommon.EkEnumeration.FolderType.Community 
+0

謝謝,但正如問題更新解釋的那樣,我更喜歡不更改Ektron代碼,或者至少將更改最小化。使用名稱空間別名需要對Ektron代碼進行很多更改。 – Spongeboy 2013-02-26 06:12:24