繁体   English   中英

命名空间“System”中不存在“DirectoryServices”

[英]'DirectoryServices' does not exist in the namespace 'System'

我试图在 ASP.Net MVC (C#) 项目中使用 DirectoryEntry 并收到以下错误:

命名空间“ System ”中不存在类型或命名空间“ DirectoryServices ”。

我在我的项目中添加了以下引用:

System
System.DirectoryServices

System.DirectoryServices 正在加载:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.DirectoryServices.dll

项目目标框架:.Net Framework 4.5.2

这似乎通常是一个简单的参考问题,但如上所述,参考应该在那里。 有什么建议吗?

实际上,正确的方法是添加对 DirectoryServices 的引用。 它与 .NET Framework 版本无关。

在解决方案资源管理器中右键单击您的项目并选择添加 -> 引用,然后选择 System.DirectoryServices。

看来你正在努力

System.DirectoryEntry directoryEntry = ...

而是简单地使用

using System.DirectoryServices;

并尝试

DirectoryEntry directoryEntry = ...

或者你也可以试试

System.DirectoryServices.DirectoryEntry directoryEntry = ...

更新:

您正在尝试在cshtml页面中使用DirectoryEntry 因此,您需要在项目的 Views 文件夹下的web.config文件中添加System.DirectoryServices引用(它不是项目根目录中的主要web.config文件)

<system.web.webPages.razor>
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      <add namespace="System.Web.Mvc" />
      <add namespace="System.Web.Mvc.Ajax" />
      <add namespace="System.DirectoryServices" />
      ....
      <!-- etc -->
    </namespaces>
  </pages>
</system.web.webPages.razor>

在您的视图web.config 中,除了添加命名空间之外,您还必须显式添加程序集。 仅仅添加到您的项目引用中似乎还不够。 这是一个对我有用的视图 web.config:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation>
      <assemblies>
        <add assembly="System.DirectoryServices.AccountManagement, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>
  </system.web>
  <system.web.webPages.razor>
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.DirectoryServices.AccountManagement" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>
</configuration>

在 .Net 5 安装以下 nuget 包System.DirectoryServices

看起来您正在尝试从System命名空间加载DirectoryEntry ,就像您在代码中编写的一样:

System.DirectoryEntry entry = ...

代替:

System.DirectoryServices.DirectoryEntry e = ...;

或者干脆:

DirectoryEntry e = ...;

在阅读了其他一些帖子后,我尝试将我的项目目标框架从“.Net Framework 4.5.2”切换到“.NET Framework 4.5”并解决了问题! 似乎 System.DirectoryServices 已在 .Net Framework 4.5.2 中删除,这似乎很奇怪。 也许它已经被其他东西取代了?

编辑:更改目标框架解决了问题,但在另一个 WS 上,我还能够在我的“System.DirectoryServices”参考中将“Copy Local”设置为“True”,从而解决了问题。 所以也许是那个 dll 不在 GAC 中的问题? 无论如何,如果他们遇到同样的问题,希望这些解决方案之一可以帮助他们。

它发生在.csApp_code下的App_code

使用<add assembly="System.DirectoryServices.AccountManagement可以解决这个问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM