gpt4 book ai didi

c# - 为什么 WindowsIdentity 类在 .NET Core 中不可见

转载 作者:太空狗 更新时间:2023-10-29 18:19:45 25 4
gpt4 key购买 nike

在 VisualStudio 2017 .NET Core 2.0 控制台应用程序中具有以下代码

using System;
using System.Security.Principal;

namespace smallTests
{
class Program
{
static void Main(string[] args)
{
var identity = WindowsIdentity.GetCurrent();
}
}
}

为什么会出现错误:

The name 'WindowsIdentity' does not exist in the current context    

如果我能在 .Net Core docs 的 .NET Core 2.0 库中看到这个类?

相同的代码适用于 .NET 控制台应用程序。

[编辑]

@Will @JohnnyL 评论说我不引用,System.Security.Principal.Windows.dll,那是真的。

但我很好奇为什么它不起作用,因为在 .NET 4.6.1 项目(其中类 WindowsIdentity 可见)中,我也没有具体引用此 System.Security.Principal.Windows.dll。但是我指的是 System.dll。

我一直认为它的工作方式类似于 namespace 层次结构。例如,当我提到

System.Security.Principal.dll

我可以使用里面的类

System.Security.Principal.Windows.dll

我错了吗?

我手动将 System.Security.Principal.dll 添加到 .NetCore 解决方案,但它仍然不起作用。

[EDIT2]

@Will 非常感谢您解释这个主题,它对我帮助很大。我试图弄清楚 WindowsIdentity 是否与 Core 兼容,似乎是这样,请参阅:

在此apisof.net在声明区域我可以看到 WindowsIdentity 在 .Net Core 2.0 System.Security.Principal.Windows, Version=4.1.1.0, PublicKeyToken=b03f5f7f11d50a3a但是我没有 System.Security.Principal.Windows.dll 的引用,我应该添加它吗?如果是,来自哪里?

.NET Core api reference我在列表中看到了这个类(如果它与核心不兼容,那么该列表的目的是什么?

我还在 that link 中找到了有关该类(class)的信息

我是不是找错地方了?

最佳答案

Microsoft 几周前发布了适用于 .NET Core 的 Windows 兼容包,

https://blogs.msdn.microsoft.com/dotnet/2017/11/16/announcing-the-windows-compatibility-pack-for-net-core/

并且通过分析System.Security.Principal.Windows.csproj的源代码和添加它的提交,

https://github.com/dotnet/corefx/blob/master/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj

我的结论是,这也是仅适用于 Windows 的兼容性库的一部分,因此只能在 Windows 上使用。

要将其添加到您的项目中,请打开您的 csproj 并为 System.Security.Principal.Windows 手动添加一个 PackageReference 标记(或使用 Visual Studio 的 NuGet 包管理器) .

关于c# - 为什么 WindowsIdentity 类在 .NET Core 中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47776680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com