2013-02-22 64 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