【发布时间】:2020-04-27 12:48:45
【问题描述】:
我在 .NET Core 应用程序、Windows 服务的上下文中工作,并且我遇到编译器错误,告诉我我有一个移动程序集的类型。我找不到所说的类型,我一直在寻找它。到目前为止,我已经尝试使用 dnSpy、Dotpeek 和 try.dot.net 的组合来引用我机器本地的相关 nuget 包或 .dlls 以查找我正在寻找的 System.Security 类型。类型的错误如下,afaik 与该版本的组合不存在......任何地方!
在命名空间中找不到类型名称“DirectorySecurity” '系统.安全.访问控制'。此类型已转发至 程序集'System.IO.FileSystem.AccessControl,版本=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 考虑添加一个 引用该程序集。
有没有一种方法可以使用外部工具在我的机器上过滤或查找编译器要求的类型?我在 Visual Studio 中(单独)引用了所有方式的依赖项,然后如果不满足编译器的要求,随后将其删除。
无论如何,我们将不胜感激 - 谢谢!
【问题讨论】:
-
@HansPassant 谢谢,我知道该包的形状是什么,即,我看到 DirectorySecurity 在命名空间中,但由于某种原因,Visual Studio 不同意我们,即使我们参考来自 NuGet 或我的机器上的那个包(部分原因是我在我的机器上找不到具有 DirectorySecurity 类型的 System.Security.AccessControl dll)。此外,该软件包没有 4.0.4.0 版本。
-
语义版本号(如 4.3.0)与 [AssemblyVersion] 号(如 4.0.4.0)失去了所有相关性。大问题。我们对您创建的 .NETCore 或 .NETStandard 项目类型以及您的目标版本一无所知,因此很难为您提供帮助。
-
在进一步检查 nuget-package 的当前版本 (4.7) 后,具体实现是 .NET Standard 符合 NET Core 2.0 而不是 3.0...所以我必须降级项目,找到不同的解决方法,或等到 System.Security.AccessControl 库与 3.0+ 兼容。