2011-08-10 70 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

相關問題