2011-08-10 51 views
2

我做与C#的一些活动目录的工作,我得到我的网页上这个错误错误无法加载文件或程序集“Interop.ActiveDs”

System.IO.FileNotFoundException: Could not load file or assembly 'Interop.ActiveDs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=46db4b78e98e1c9d' or one of its dependencies. The system cannot find the file specified. 

它具有与该ActiveDS参考一些问题已添加 我是一个64位的机器上,并在其上运行的服务器也是64

我加入了ActiveDS参考,所以我可以做这样的事情

newRoleGroup.Properties["groupType"].Value = ActiveDs.ADS_GROUP_TYPE_ENUM.ADS_GROUP_TYPE_UNIVERSAL_GROUP; 

所以我问题是,为什么它不能加载ActiveDs引用?

+3

FYI ,您不需要在“ASP.NET C#”中为主题添加前缀。我们在[SO]上有标签,并且标签在这方面做得更好。 –

回答

3

你会好得多未服用参考COM库,而不是仅仅宣布在你的代码如适当的常数:

enum ADS_GROUP_TYPE_ENUM { 
    public long ADS_GROUP_TYPE_GLOBAL_GROUP = 0x00000002, 
    public long ADS_GROUP_TYPE_DOMAIN_LOCAL_GROUP = 0x00000004, 
    public long ADS_GROUP_TYPE_LOCAL_GROUP   = 0x00000004, 
    public long ADS_GROUP_TYPE_UNIVERSAL_GROUP  = 0x00000008, 
    public long ADS_GROUP_TYPE_SECURITY_ENABLED  = 0x80000000 
} 
4

试试这个:

1)复制C:\ WINDOWS \ Syswow64资料\ ActiveDs.dll及其各自 ActiveDs.tlb文件到您的解决方案中的一个文件夹;称其为 外部参考文件夹

2)在项目中

3)添加一个新的参考删除提及ActiveDs,但这次不是挑选COM 版本,挑TLB来代替。 Visual Studio将为您创建Intero 包装。

+0

试过...如果服务器运行64位,为什么要这样做? – abney317

+0

某些为32位环境设计的较旧组件不适用于64位。我之前遇到过这个问题,而不是那个组件。 –

+0

我会再试一次,看看 – abney317

-2

此方法处理

private enum GroupType : uint 
{ 
    UniversalGroup = 0x8, 
    DomainLocalGroup = 0x4, 
    GlobalGroup = 0x2, 
    SecurityGroup = 0x80000000 
} 

private const int UniversalSecurityGroup = unchecked((int)(GroupType.UniversalGroup | GroupType.SecurityGroup)); 
+2

你刚刚做@BrianDesmond说。你应该接受他的答案。 -1 – jgauffin

相关问题