C# 如何安装Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms?

C# 如何安装Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms?,c#,active-directory,azure-active-directory,C#,Active Directory,Azure Active Directory,我正在尝试使用Visual Studio 2019运行以下Microsoft示例: 当我进行构建时,会出现以下三个引用错误: 通过在此处搜索并安装相应的NuGet软件包,我能够解决第一个错误(针对Microsoft.IdentityModel.Clients.ActiveDirectory): 但是,我找不到包含Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms DLL的NuGet包 DLL存在于我的系统上;共有6份,其中

我正在尝试使用Visual Studio 2019运行以下Microsoft示例:

当我进行构建时,会出现以下三个引用错误:

通过在此处搜索并安装相应的NuGet软件包,我能够解决第一个错误(针对Microsoft.IdentityModel.Clients.ActiveDirectory):

但是,我找不到包含Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms DLL的NuGet包

DLL存在于我的系统上;共有6份,其中两份来自2015年,四份为最新版本。但是,它们位于非标准位置;例如,其中两个位于以下树中:

C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\
    CommonExtensions\Microsoft\SSIS\150\Extensions
C:\Program Files\Microsoft SQL Server\150\DTS\Extensions\
两个在下面的树下:

C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\
    CommonExtensions\Microsoft\SSIS\150\Extensions
C:\Program Files\Microsoft SQL Server\150\DTS\Extensions\
2015年的两个项目如下:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PrivateAssemblies
C:\Program Files (x86)\Microsoft Visual Studio\Shared\Packages\
    Microsoft.IdentityModel.Clients.ActiveDirectory.2.14.201151115\lib\net45
我的问题是:
这个ActiveDirectory.WindowsForms.dll上的故事是什么,如果有的话,它是哪个NuGet包?

当遇到无法找到NuGet软件包的情况时,是否手动将相关DLL复制到应用程序树中?

结果是存在一个更大的问题,我通过下面的解释发现了这个问题,前提是:

  • ADAL的2.28.x版本之后不再支持用户令牌提供程序。我们决定只支持.NET 4.5.2的用户令牌提供程序
  • 如果您希望针对.NET>4.5.2及更高版本(例如.NET 4.6.1),我们将支持ADAL>=3.14.x,而>=ADAL 3.14.x的任何内容都不支持 支持用户令牌提供程序
  • 当我第一次在VisualStudio2019中打开helloworld dotnet项目时,该框架被设置为4.6.1,这导致了错误身份验证模型的问题

    我把这个项目降到了4.5.2级。我还强制ADAL NuGet软件包加载2.28.4版(日期为2017年3月22日)。之后,一切都准备就绪,因为缺少的DLL(即ActiveDirectory.WindowsForms.DLL)是作为旧版本ADAL包的一部分提供的

    更新:

    受到tvdias的回答的鼓舞,我得到了使用.NET 4.6.1的解决方案,如下所示:

    • 使用了ADAL NuGet软件包的2.28.4版
    • 添加了System.Net.Http.Formatting.Extension NuGet包(此包仅存在一个版本:5.2.3)
    以下是packages文件夹的最终内容:

    注意:ARMClient.Authentication.dll文件已在该文件夹中。除了我上面提到的两个包之外,其他包都是作为依赖项安装的


    因此,事后诸葛亮,这里有一个更好的问题重述:当我在Visual Studio 2019中首次打开helloworld dotnet项目时,该框架被设置为4.6.1,这触发了一个比2.28.4更新的ADAL版本的安装。解决方案代码中使用的功能(如调用WinForms对话框)在当前ADAL版本中不存在。这就产生了问题。也就是说,当前ADAL版本中的身份验证模式甚至不需要登录对话框,因此不需要WinForms DLL。

  • 安装ARM客户端(我使用了Chocooley:
    choco安装armclient
  • 移除图像上标记有注意标志的包裹,并
  • 安装Microsoft.IdentityModel.Clients.ActiveDirectory版本
    2.28.0

  • 您能否澄清您试图运行的解决方案?是来自master branch的helloworld dotnet吗?@tvdias是正确的。谢谢。谢谢你提供有关使用4.6.1跑步的信息,我会尝试一下。这个@Sabuncu有什么好运气吗?嗨,tvdias,我更新了我的答案。谢谢你催促我继续前进。我不明白你所说的“图片上未找到的包裹”是什么意思。你是指解决方案中缺少的引用吗?谢谢。@Sabuncu,我是说那些标有注意标志的包裹。更新了答案。