Directory.GetAccessControl()报错无定义,求修复方案及替代方法
修复方案及替代方案
问题原因
Directory.GetAccessControl方法在.NET Framework中可直接调用,但在.NET Core/.NET 5及以上版本中,该方法被调整为扩展方法,且需要额外安装NuGet包才能使用。
修复步骤(针对.NET Core/.NET 5+)
安装必要NuGet包
在NuGet包管理器中搜索并安装System.IO.FileSystem.AccessControl,或在Package Manager控制台执行命令:Install-Package System.IO.FileSystem.AccessControl调整代码实现
可以通过DirectoryInfo实例调用扩展方法替代原写法:using System.IO; using System.Security.AccessControl; // 替换原报错代码 DirectoryInfo dirInfo = new DirectoryInfo(path); DirectorySecurity s1 = dirInfo.GetAccessControl();也可直接通过
FileSystemAclExtensions类调用:DirectorySecurity s1 = FileSystemAclExtensions.GetAccessControl(new DirectoryInfo(path));
.NET Framework环境排查
若项目基于.NET Framework仍报错,检查以下两点:
- 确认项目目标框架版本不低于**.NET Framework 2.0**(该方法从2.0版本开始引入)。
- 排查是否存在自定义
Directory类与系统类冲突,可尝试使用完全限定名调用:DirectorySecurity s1 = System.IO.Directory.GetAccessControl(path);
内容的提问来源于stack exchange,提问作者Jesse Barney
相关产品推荐
相关产品推荐

