簡體   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