ADAL 平台 dll 未复制到输出
ADAL Platform dll not copied to output
总结
需要的Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll没有复制到我项目的bin目录下
详情
我有以下
- 一个名为 abc.settings 的 class 项目,除标准参考外几乎没有其他参考。
- 一个名为 abc.settings.extensions.keyvault 的 class 项目,它是 abc.settings 的扩展库,具有 KeyVault nuget 和Microsoft.IndentityModels.Clients.ActiveDirectory nuget,它是 KeyVault(以及其他)的依赖项
- 一个名为 abc.login 的项目,它引用了 abc.settings 和 abc.extensions.keyvault
abc.login 应用程序构建正常,没有错误,但是当我 运行 它时,我得到一个 运行time 聚合异常,它沸腾了无法加载模块 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
我尝试过的东西
- 确保这两个文件的本地复制都是正确的
- 确保特定版本为这两个 dll 设置相同(它是并且它们被设置为 true)
- 重新安装了 nugets
- 在 abc.login 项目中安装了 ADAL nuget - 这会导致应用程序运行...但它应该被复制,因为 abc.extensions.keyvaul 被引用了。
- 我查看了 This SO,但我不明白这是怎么工作的(一个 dll 被复制,另一个没有)。 post 意味着这个引用的项目 dll 的引用永远不会起作用。
关于调查原因或调查地点的任何建议?
谢谢。
已解决 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);
}
Blockquote
总结
需要的Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll没有复制到我项目的bin目录下
详情
我有以下
- 一个名为 abc.settings 的 class 项目,除标准参考外几乎没有其他参考。
- 一个名为 abc.settings.extensions.keyvault 的 class 项目,它是 abc.settings 的扩展库,具有 KeyVault nuget 和Microsoft.IndentityModels.Clients.ActiveDirectory nuget,它是 KeyVault(以及其他)的依赖项
- 一个名为 abc.login 的项目,它引用了 abc.settings 和 abc.extensions.keyvault
abc.login 应用程序构建正常,没有错误,但是当我 运行 它时,我得到一个 运行time 聚合异常,它沸腾了无法加载模块 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
我尝试过的东西
- 确保这两个文件的本地复制都是正确的
- 确保特定版本为这两个 dll 设置相同(它是并且它们被设置为 true)
- 重新安装了 nugets
- 在 abc.login 项目中安装了 ADAL nuget - 这会导致应用程序运行...但它应该被复制,因为 abc.extensions.keyvaul 被引用了。
- 我查看了 This SO,但我不明白这是怎么工作的(一个 dll 被复制,另一个没有)。 post 意味着这个引用的项目 dll 的引用永远不会起作用。
关于调查原因或调查地点的任何建议?
谢谢。
已解决 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);
}
Blockquote