2017-12-12 6 views
4

に表示されていない2.0コンソールアプリケーションはなぜWindowsIdentityクラスはVisualStudioを2017 .NETのコアで、以下のコードを持つ.NETのコア

using System; 
using System.Security.Principal; 

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

は、なぜ私はエラーを取得しています.Net Core docsの.NET Core 2.0ライブラリのこのクラスを参照してください。

同じコードは.NET Consoleアプリケーションで機能します。

は、[EDIT]

@Will @JohnnyLは真であること、System.Security.Principal.Windows.dll、私は言及していないとコメントしました。

しかし、私はなぜそれが動作していないのか不思議です。 が.NET 4.6.1プロジェクト(クラスWindowsIdentityが表示されています)であるため、私はこのSystem.Security.Principal.Windows.dllを特に参照しません。しかし、私はSystem.dllを参照します。

私はいつも名前空間階層のように動作すると思っていました。例えば、私は

System.Security.Principal.dll

を参照するとき、私は

System.Security.Principal.Windows.dllにあるクラスを使用することができます。

は私が間違っていますか?

私はSystem.Security.Principal.dllを.NetCoreソリューションに手動で追加しましたが、まだ動作しません。 [EDIT2]

@Will

は、それは私をたくさん助けた対象をexpainingためにあなたをたくさんありがとうございます。 私が把握しようとしたことは、コアとWindowsIdentity互換性があり、参照してくださいようです:

このapisof.netに宣言領域に私はWindowsIdentityが.Net Core 2.0 System.Security.Principal.Windows, Version=4.1.1.0, PublicKeyToken=b03f5f7f11d50a3a であることがわかりますが、私は参照でSystem.Security.Principal.Windows.dllを持っていない、私がすべきそれを追加しますか?はいの場合はどこからですか?

私はそれがコアと互換性がない場合、そのリストの目的が何であるか(リストにこのクラスを参照してください?

私もthat link

にそのクラスに関する情報を見つける.NET Core api reference

私が探しています間違った場所?

+2

WAGですが、System.Security.Principal.Windows.dllを参照していない可能性があります。 – Will

+2

このクラスが生きているアセンブリの文字列 'Assembly:'があります – JohnyL

+0

@WillとJohnyLヒントありがとう、私の編集をご覧ください。 – Reven

答えて

7

マイクロソフトではWindows互換機能パックを発表しました。NETコア数週間前、

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.WindowsPackageReferenceタグを手動で追加します(またはVisual StudioのNuGet Package Managerを使用します)。

+3

を追加しました。「Windowsデスクトップアプリケーションを構築する場合は、.NET Frameworkが最適です。」この情報は時々、クイックアクションとリファクタリングの電球に含まれます。 –

+0

@LexLiこのような詳細を説明していただきありがとうございます。したがって、ページ上のブラウザ[https://docs.microsoft.com/en-us/dotnet/api/?view=netcore-2.0](https://docs.microsoft.com/en-us/dotnet/api/) ?view = netcore-2.0)は.Net Coreと互換性のあるクラスとアセンブリを実際に表示しています。 – Reven

+0

@Reven、はい。 .NET APIブラウザは、GitHubコードベースと一致します。 ["Applied to"](https://docs.microsoft.com/en-us/dotnet/api/system.security.principal.windowsidentity?view=netcore-2.0#Applies_to)セクションでは、.NET Coreがサポートされていることを示しています。どのNuGetパッケージを含めるかを特定するには、上にスクロールして「アセンブリ」セクションを読む必要があります。それは直感的ではありませんが、今はもっと良い選択肢ではありません。 –

関連する問題