Загрузка DLL в GAC

в настоящее время у меня проблема с получением DLL в Windows GAC. Я попытался выполнить шаги по созданию DLL и ее загрузке, как описано в этом сообщении в блоге: http://blogs.technet.com/b/cloudpfe/archive/2014/02/01/how-to-create-a-custom-authentication-provider-for-active-directory-federation-services-3-0-part-2.aspx

В тот момент, когда я пытаюсь вызвать следующую команду:

[System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7514a164b89fa979")

Я получаю сообщение об ошибке, которое говорит мне, что System.EnterpriseServices не может быть найден:

Исключение, вызывающее «Загрузить» с аргументом (-ами) «1»: «Не удалось загрузить файл или сборку «System.EnterpriseServices, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = 7514a164b89fa979» или одна из его зависимостей. Система не может найти указанный файл."

Указанная DLL (System.EnterpriseServices) существует* на компьютере.

Итак, теперь мой вопрос: почему этот метод не может найти DLL и что мне нужно сделать/изменить, чтобы эта команда заработала?

ПРИМЕЧАНИЕ. Я пробовал это на ванильном Windows Server 2012 R2 с установленными только частями ADFS; И я вызвал команду из Powershell.

*ОБНОВЛЕНИЕ: DLL System.EnterpriseServices находится в
C:\Windows\Microsoft.NET\assembly\GAC_64\System.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a
и
C:\Windows\WinSxS\amd64_system.enterpriseservices_b03f5f7f11d50a3a_4.0.9600.1638‌​4_none_53a3f9b13fac0ba5\
Таким образом, он должен быть доступен в GAC.


person Wolf    schedule 19.11.2014    source источник
comment
Где он находится на машине? Используйте Fuslogvw.exe для устранения проблем с разрешением сборки.   -  person Hans Passant    schedule 19.11.2014
comment
Он находится в папке C:\Windows\WinSxS\amd64_system.enterpriseservices_b03f5f7f11d50a3a_4.0.9600.16384_none_53a3f9b13fac0ba5\System.EnterpriseServices.dll. Есть ли способ получить Fuslogvw.exe без полной установки VisualStudio на сервере или, по крайней мере, аналогичного инструмента без этой зависимости? ?   -  person Wolf    schedule 20.11.2014
comment
Это не GAC, он хранится в c:\windows\microsoft.net\assembly. Так что ошибка вполне нормальная. Довольно странно получить его в неуправляемом параллельном кеше, кстати, должен быть очень ненадежный установщик, делающий это.   -  person Hans Passant    schedule 20.11.2014
comment
Значит, System.EnterpriseServices.dll тоже должен находиться в каталоге GAC? Может ли это означать, что установка .Net (которая, как я читаю, поставляется с предустановленной Win8.1) повреждена?   -  person Wolf    schedule 20.11.2014


Ответы (1)


Я думаю, что ваш токен открытого ключа неверен, вы нашли свой собственный ответ в своем обновлении :).

Это должно быть [System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")

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

person GCarbonneau    schedule 15.05.2015