【问题标题】:query on nuget packages loading at runtime in .net standard projects查询 .net 标准项目中运行时加载的 nuget 包
【发布时间】:2017-10-31 17:04:05
【问题描述】:

我在 VS2017 中创建了一个示例类库,它具有在 azure IOT hub 中注册设备的方法。我将目标框架设置为 .Net Standard 1.6,以便符合此标准的客户可以使用它。也想试试.net标准:)

我添加了对通过 nuget 与 azure IOT hub 通信所需的最新版本 Microsoft.Azure.Devices (1.4.1) 的引用。完成设备注册部分。没有编译错误。为了测试它,我在控制台应用程序中引用了这个程序集并调用了该函数。
出现运行时错误,

无法加载文件或程序集“Microsoft.Azure.Devices, 版本=1.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35' 或 它的依赖项之一。系统找不到指定的文件。

然后我注意到在控制台应用程序的 bin 文件夹和程序集项目中也没有找到这个 dll。通常,nuget 依赖项会被下载并复制到 bin。 在这种情况下也没有 nuget packages 文件夹。 我查看了这篇博文 https://www.hanselman.com/blog/ReferencingNETStandardAssembliesFromBothNETCoreAndNETFramework.aspx 并尝试了 packagereference 选项。 没啥事儿。 我不确定我在这里缺少什么。可能是使用 .net 标准目标时应遵循的基本错误。

【问题讨论】:

    标签: .net azure nuget .net-standard


    【解决方案1】:

    根据您的描述,我创建了我的 .Net Standard 1.6 类库并引用了Microsoft.Azure.Devices 1.4.1。对于 .Net Standard 1.6,我创建了面向 4.6.1 的 .NET Framework 控制台应用程序并引用了 .Net Standard 1.6 类库。我可能会遇到与您提到的相同的问题,在按照您提供的教程进行操作后,我编辑了控制台应用程序的 *.csproj 并重新构建它,然后它可以按我的预期工作。

    没有为我的 .NET Framework 控制台应用程序指定 PackageReference,我无法在我的 bin 文件夹下找到 Microsoft.Azure.Devices.dll。总之,你需要检查相关的dll是否已经复制到你的控制台应用程序的bin文件夹中。

    【讨论】:

    • 有趣。我确实尝试了我解释过的相同步骤,并且没有将 dll 复制到该项目的 bin 文件夹中。理想情况下,不应手动编辑 csproj。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 2018-08-25
    • 1970-01-01
    • 2015-10-29
    • 2017-05-27
    相关资源
    最近更新 更多