1

概括

所需的 Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll 未复制到我项目的 bin 目录

细节

我有以下

  • 一个名为abc.settings的类项目,除了标准项目之外几乎没有其他参考资料。
  • 一个名为abc.settings.extensions.keyvault的类项目,它是 abc.settings 的扩展库,具有 KeyVault nuget 和Microsoft.IndentityModels.Clients.ActiveDirectory nuget,它是 KeyVault 的依赖项(以及其他)
  • 一个名为abc.login的项目,其中引用了 abc.settings 和 abc.extensions.keyvault

abc.login应用程序构建正常,没有错误,但是当我运行它时,我得到一个运行时聚合异常,归结为无法加载模块 Microsoft.IdentityModel.Clients。活动目录.平台.dll

当我查看 abc.settings.extensions.keyvault 的 bin 文件夹时,Microsoft.IdentityModel.Clients。ActiveDirectory.Platform .dll 与 Microsoft.IdentityModel.Clients 一起存在。ActiveDirectory .dll 符合预期。

当我查看 abc.login\bin\x64 时,我看到了 Microsoft.IdentityModel.Clients。ActiveDirectory.dll但没有 Microsoft.IdentityModel.Clients。活动目录.平台.dll

我尝试过的事情

  • 确保这两个文件的本地复制都为真
  • 确保这两个 dll 的特定版本设置相同(它是并且它们被设置为 true)
  • 重新安装了nugets
  • 在 abc.login 项目中安装了 ADAL nuget - 这会导致应用程序工作......但它应该已被复制,因为引用了 abc.extensions.keyvaul。
  • 我检查了This SO但我不明白这是如何工作的(一个 dll 被复制,另一个没有)。那篇文章暗示这个引用的项目 dll 的引用永远不会起作用。

关于为什么或在哪里进行调查的任何建议?

谢谢你。

4

1 回答 1

1

通过这个答案解决

有趣的是,这个答案并没有在我发布时作为答案出现,但在我发布后就出现了。

关于我的问题,在 abc.extensions.keyvault 中,我向其中一个引用缺少的类型的类添加了一个虚拟方法 ....platform.dll 然后 console.writeline 该类型的名称(第二部分避免优化)。

    public static void DoNotDeleteOrUse()
    {
        var TypeOfSomething = typeof(Microsoft.IdentityModel.Clients.ActiveDirectory.AdalOption);
        Console.WriteLine(TypeOfSomething.FullName);

    }

块引用

于 2016-09-16T05:39:12.977 回答