![](/img/trans.png)
[英]The type or namespace name 'DirectoryServices' does not exist in the namespace?
[英]'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 中的问题? 无论如何,如果他们遇到同样的问题,希望这些解决方案之一可以帮助他们。
它发生在.cs
在App_code
下的App_code
使用<add assembly="System.DirectoryServices.AccountManagement
可以解决这个问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.