【发布时间】:2018-01-17 08:42:38
【问题描述】:
在我的解决方案中,我有一个使用 Razor 页面的 ASP.NET Core 2 MVC 应用程序、一个 Web API 2 应用程序和一个 .NET 4.7.1 类库,其中包含使用 Azure Storage NuGet 中的 Azure 表存储的服务及其定义( v8.7.0)。我正在使用 autofac 进行依赖注入。
我已经使用 Autofac 的依赖注入连接了我的两个 Web 应用程序以使用我的库中的类。 Web API 应用程序工作正常,但核心应用程序不能。当我构建而不将 Azure Storage NuGet 包安装到核心应用程序时,我收到以下错误:
X.Library' 身份为 'X.Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 使用 'Microsoft.WindowsAzure.Storage, 版本=8.7.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35' 具有比引用程序集更高的版本 带有标识的“Microsoft.WindowsAzure.Storage” 'Microsoft.WindowsAzure.Storage,版本=8.1.4.0,文化=中性, PublicKeyToken=31bf3856ad364e35
这让我相信 ASP.NET Core 2 应用程序预装了 Azure 存储 - 但我在项目中找不到任何对它的引用!很奇怪。
所以我尝试通过安装 Azure Storage (v8.7.0) 包来解决这个问题,该包与我正在使用的库中安装的版本匹配到我的核心应用程序中。该应用程序现在构建并且我的依赖项被注入但是当我尝试使用它们时,我得到MissingMethodExceptions 方法CreateIfNotExists 和CreateQuery。虽然我的 Web API 应用程序可以查询 Azure 表服务,但我的核心应用程序不能使用相同的方法来执行此操作。
经过一些研究,Azure 存储库的 ASP.NET Core 实现似乎删除了一些同步方法,并且在运行时它使用此版本而不是我的库引用的 .NET Framework 兼容版本。
- 有没有办法从 ASP.NET Core 2 应用程序中删除 Azure 存储?我怀疑它是预装的吗?
- 我想修复它的最简单方法是使用 Framework 和 Core 实现中存在的方法,您会这样修复它吗?
【问题讨论】:
-
我还没有机会完全研究这个,但是根据Microsoft.WindowsAzure.Storage 的 apisof.net 页面,.NET Core 不支持它,除非你包含了 Platform Extensions 包。大概是因为(顾名思义,它包括 Windows 特定的 API 和方法)。
-
您能否创建一个依赖于 Microsoft.WindowsAzure.Storage 的 .NET Standard 类库并在您的应用程序中使用它?
-
谢谢 Jamie,我会试试看的。
-
实际上,由于 .NET Framework 应用程序,这不起作用。
-
@JamesMundy - All versions of .NET Standard 支持 .NET Framework 4.7.1 客户端程序集。您遇到了什么问题?
标签: asp.net-core azure-storage autofac asp.net-core-2.0