ADAL平台dll未复制到输出

时间:2016-09-15 22:51:20

标签: visual-studio-2015 msbuild adal azure-keyvault

摘要

所需的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。 ActiveDirectory .Platform 的.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。 ActiveDirectory.Platform 的.dll

我尝试过的事情

  • 确保这两个文件的copy local为true
  • 这两个dll的确保特定版本设置相同(它是,并且它们设置为true)
  • 重新安装了nugets
  • 在abc.login项目中安装了ADAL nuget - 这会导致应用程序正常工作......但是应该复制它,因为引用了abc.extensions.keyvaul。
  • 我查看了This SO,但我无法理解这是一半工作(一个dll被复制,另一个没有)。该帖子暗示这个引用的项目dll的引用永远不会起作用。

有关调查原因或地点的任何建议吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

解决 by this answer

有趣的是,这个答案没有像我发布的那样作为答案,但是一旦我发布了。

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

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

    }
  

块引用