目前我在将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")
我收到一个错误,告诉我找不到系统企业服务:
使用"1"参数调用"加载"的异常:"无法加载文件或 程序集"系统.企业服务,版本=4.0.0.0,区域性=中性, PublicKeyToken=7514a164b89fa979' 或其依赖项之一。这 系统找不到指定的文件。
指定的 DLL(System.EnterpriseServices)确实存在于计算机上*。
所以现在我的问题是,为什么此方法找不到 DLL,我必须做什么/更改才能使此命令正常工作?
注意:我在只安装了ADFS部件的普通Windows Server 2012 R2上尝试过这个;我已经从Powershell调用了命令。
*更新:System.EnterpriseServices DLL 驻留在
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 获得。
我认为您的公钥标记不正确,您在更新:)中找到了自己的答案。
它应该是[System.Reflection.Assembly]::Load("System.EnterpriseServices, version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
试一试。