Ошибка Не удалось загрузить файл или сборку Interop.ActiveDs - PullRequest
3 голосов
/ 10 августа 2011

Я делаю некоторую активную работу с каталогом с c #, и я получаю эту ошибку на своей странице

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-битовая машина и сервер, на котором она работает, также x64

Я добавил ссылку ActiveDS, чтобы я мог сделать что-то вроде этого

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

Так что мой вопрос, почему он не может загрузитьActiveDs ссылка?

Ответы [ 3 ]

5 голосов
/ 10 августа 2011

Попробуйте это:

1) Скопируйте C: \ Windows \ SysWOW64 \ ActiveDs.dll и соответствующий файл. Файл ActiveDs.tlb в папку в вашем решении; называть это Папка с внешней ссылкой

2) Удалите ссылку на ActiveD в вашем проекте

3) Добавить новую ссылку, но на этот раз вместо выбора COM версия, вместо этого выберите TLB. Visual Studio создаст Интеро Обертка для тебя.

3 голосов
/ 12 августа 2011

Было бы гораздо лучше не брать ссылку на библиотеку COM, а вместо этого просто объявить правильные константы в вашем коде, например ::100100

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
}
0 голосов
/ 24 сентября 2011

Я создал перечисление, похожее на ответ Брайана Десмонда:

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

и проверил как универсальную группу, так и группу безопасности следующим образом:

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