Почему класс WindowsIdentity не отображается in.NET Керн

имея код ниже в 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 2.0 в.Net Core docs ?

же код работает .Net приложение консоли.

[EDIT]

@Will @ JohnnyL прокомментировал, что я не имею в виду,System.Security.Principal.Windows.dll - это правда.

но мне любопытно, почему это не работает, потому что в проекте .NET 4.6.1 (где виден класс WindowsIdentity) я также не ссылаюсь на это System.Security.Principal.Windows.dll в частности. Однако я ссылаюсь на систему.файл DLL.

Я всегда думал, что он работает как иерархию пространства имен. Например, когда я ссылаюсь на

System.Security.Principal.dll

Я могу использовать класс, который находится в

System.Security.Principal.Windows.dll.

я ошибаюсь?

добавил System.Security.Principal.dll to .Решение NetCore вручную, но оно по-прежнему не работает работа.

[EDIT2]

@Will Спасибо большое за expaining тему она мне очень помогла. Я попытался выяснить, совместим ли 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 в ссылках, должен ли я добавить его? Если да, то откуда?

в api .NET Core ссылка я вижу этот класс в списке (какова цель этого списка, если он не совместим с core?

Я также нахожу информацию об этом классе в этой ссылке

Я смотрю не в тех местах?

1 ответов


Microsoft объявила пакет совместимости Windows для .NET Core несколько недель назад,

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 и добавьте PackageReference тег System.Security.Principal.Windows вручную (или используйте Диспетчер пакетов NuGet Visual Studio).