首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft.WindowsAzure.SDK在.Net核心工程中的应用警告

Microsoft.WindowsAzure.SDK在.Net核心工程中的应用警告
EN

Stack Overflow用户
提问于 2019-07-18 12:35:33
回答 1查看 957关注 0票数 4

我已经在一个NuGet核心3.0应用程序中安装了Microsoft.WindowsAzure.SDK软件包。这将导致以下警告:

警告NU1701包'Microsoft.WindowsAzure.SDK 2.9.0‘是使用'.NETFramework,Version=v4.6.1’而不是项目目标框架'.NETCoreApp,Version=v3.0‘恢复的。此软件包可能与您的项目不完全兼容。

当试图将包安装到.Net标准2.0项目中时,我会收到类似的错误。

NuGet 列出Microsoft.WindowsAzure.SDK包是没有依赖项的。另一个问题解决了当时缺少包的问题;包现在存在,但它会产生此警告。

当然,我可以抑制此警告。我理解(例如,这个答案),当消息出现时,考虑到.Net Framework4.6.1(及以后的版本)和.Net Core3.0的相似之处,代码通常会正常工作。然而,在其他时候,应用程序可能在运行时失败。

看起来奇怪的是,对于Azure来说至关重要的包会在.Net核心项目中发出这样的警告,而这个警告大概意味着什么。整个API会继续在.Net核心(或.Net标准)项目中工作吗?有没有什么可能不起作用的文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-18 13:05:00

NU1701与依赖无关,它关系到在包的lib/文件夹中选择的dll。如果您查看包(使用fuget.org,或者查看全局packages文件夹中的目录,或者从nuget.org下载nupkg,并使用NuGet包资源管理器或任何其他可以打开zip文件的程序),您将看到‘ll直接位于lib/文件夹下,而’ll通常位于lib/<tfm>/下。这是一个NuGet不鼓励并认为与.NET核心不兼容的旧布局。因此,它使用Asset回退来查看包是否与.NET 4.6.1兼容,我们认为它是兼容的,尽管包没有明确说明它与哪个.NET框架兼容。

实际上,包可能在运行时失败,NuGet无法知道,因此出现了警告。这是我非常喜欢端口适配器模拟器设计模式的原因之一。为blob存储创建一个适配器,它还可以使用比Azure SDK更简单的API。为适配器编写测试并在netcoreapp3.0上运行测试,如果测试通过,您可以确信您的适配器使用的任何API在生产过程中都不会在运行时崩溃。然后,您只需要确保所有其他代码都直接使用适配器而不是Azure。您还可以看到,它如何使切换到一个新的包很容易,在罕见的时候,需要发生。

但是,在这种情况下,您可能会注意到,Microsoft.WindowsAzure.SDK包的最新版本为2.9.0,并于2016年5月发布,因此,只要稍微搜索一下,就会发现2019年5月发布了10.0.3版本的包Microsoft.Azure.Storage.Blob。这个包有.NET框架和.NET标准库,所以如果使用它,就不会再收到NU1701警告了。类似于您使用的其他Azure API,它们现在都被分割成单独的包,而不是一个巨大的SDK,大多数项目使用不到1%的SDK。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57094599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档