我在VS2017中创建了一个示例类库,它具有在azure IOT集线器中注册设备的方法。我将目标框架设置为.Net Standard 1.6,以便符合此标准的客户端可以使用它。也想试试.net标准:)
我添加了对通过nuget与azure IOT集线器通信所需的最新版Microsoft.Azure.Devices(1.4.1)的引用。完成了设备注册部分。没有编译错误。为了测试它我在控制台应用程序中引用了这个程序集并调用了该函数 出现运行时错误
无法加载文件或程序集'Microsoft.Azure.Devices, Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或 其中一个依赖项。系统找不到指定的文件。
然后我注意到在控制台应用程序和程序集项目的bin文件夹中找不到这个dll。通常,nuget依赖项被下载并复制到bin。 此外,还没有nuget packages文件夹。 我查看了这篇博文https://www.hanselman.com/blog/ReferencingNETStandardAssembliesFromBothNETCoreAndNETFramework.aspx并尝试了packagereference选项。 没啥事儿。 我不知道我在这里错过了什么。可能是使用.net标准目标时应遵循的基本错误。
答案 0 :(得分:0)
根据您的描述,我创建了我的.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文件夹中。