我正在尝试在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
这似乎通常是一个简单的参考问题,但如上所述,参考应该在那里。有什么建议吗?提前谢谢!
答案 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