'的DirectoryServices'命名空间中不存在'系统'

时间:2017-03-12 05:27:08

标签: c# asp.net asp.net-mvc asp.net-mvc-4 directoryservices

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

The type or namespace 'DirectoryServices' does not exist in the namespace 'System'.

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

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

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

6 个答案:

答案 0 :(得分:2)

好像你正在尝试

System.DirectoryEntry directoryEntry = ...

而是简单地使用

using System.DirectoryServices;

并尝试

DirectoryEntry directoryEntry = ...

或者您也可以尝试

System.DirectoryServices.DirectoryEntry directoryEntry = ...

<强>更新

您正试图在DirectoryEntry页面中使用cshtml。因此,您需要在项目的Views文件夹下的System.DirectoryServices文件中添加web.config的引用(它不是项目根目录中的主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>

答案 1 :(得分:1)

您似乎正在尝试从DirectoryEntry命名空间加载System,就好像您已在代码中写入此内容一样:

System.DirectoryEntry entry = ...

而不是:

System.DirectoryServices.DirectoryEntry e = ...;

或简单地说:

DirectoryEntry e = ...;

答案 2 :(得分:1)

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

编辑:更改目标框架已解决的问题,但在另一个WS我也能够设置“复制本地”#39; to&#34; True&#34;在我的System.DirectoryServices&#39;参考和解决了这个问题。那么也许这个dll不属于GAC的问题呢?无论如何,希望其中一个解决方案可以帮助他们遇到同样的问题。

答案 3 :(得分:0)

Views 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>

答案 4 :(得分:0)

实际上,正确的方法是添加对DirectoryServices的引用。它与.Net框架版本无关。 只需右键单击您的项目并添加参考即可。

答案 5 :(得分:0)

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