Почему класс 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 несколько недель назад,
и путем анализа исходного кода System.Security.Principal.Windows.csproj
и фиксация, добавляющая его,
мой вывод заключается в том, что это также часть библиотек совместимости только для Windows, поэтому их можно использовать только в Windows.
чтобы добавить это в свой проект, откройте csproj и добавьте PackageReference
тег System.Security.Principal.Windows
вручную (или используйте Диспетчер пакетов NuGet Visual Studio).