【发布时间】:2018-07-06 09:20:23
【问题描述】:
我有一个业务逻辑和 DAL 项目,将此项目称为 A。此库具有 .NET Standard 2.0 作为目标框架。我正在引用 NuGet 包 RavenDB.Client 3.5.4,它使用 NuGet 包的 netstandard1.3 文件夹中的 library/dll。
我有一个目标框架为 .NET Framework 4.7.1 的 ASP.NET Web API 应用程序,调用此项目 B(不使用 .Net Core 2,因为有一些对旧代码的引用不适用于 .网络核心)。
我也有一个 ASP.NET Core 应用,用 .NET Core 2.0 的目标框架调用这个项目 C。
项目 B 和 C 都参考项目 A。
项目 C 可以毫无问题地引用项目 A 和 RaveDB.Client NuGet 包,因为它也使用 netstandard1.3 文件夹中的 library/dll。从 C 调用包 A 中的 BL 或 DAL 时没有问题。
项目 B 可以引用项目 A,但引用 RavenDB.Client NuGet 包引用 net45 文件夹中的包/dll。我收到此错误:
The type 'IDocumentStore' is defined in an assembly that is not referenced.You must add a reference to assembly 'Raven.Client.Lightweight, Version=3.5.4.0, Culture=neutral, PublicKeyToken=null
这首先会产生误导,因为很明显问题出在 Target Framework 上。我参考了 Raven.Client.Raven.Client.Lightweight 版本 3.5.4.0。但我正在将一个从 net45 库构建的对象 (IDcoumentStore) 传递给 netstandard1.3 库。
我的问题,因为 .NET Framework 4.7.1 可以使用 .NET Standard 库,我如何强制 VS2017 中针对 .NET Framework 4.7.1 的项目在 NuGet 包中使用 .NET Standard 库?我尝试将 targetFramework="net471" 更改为 targetFramework="netstandard1.3" 不起作用似乎 VS 或 NuGet 恢复了。
我唯一的解决方案是从 Nuget 包中删除 net45 库,并仅使用 .Netstandard 库推出自己的解决方案。
【问题讨论】:
-
联系 Raven 软件包开发人员,让他们为您提供解决方案。更改 NuGet 行为超出了您的控制范围,并且您不应该尝试这样做。
-
好建议,但他们会是唯一遇到此类问题的人吗?如果我遇到另一个具有相同问题的库怎么办,似乎更好的解决方案可以选择使用哪个目标框架。
-
顺便说一句,你用
packages.config吗?您是否尝试改用包引用? -
阅读一些文档Package references in project files 的两个问题 1. 文档状态仅适用于 .NET Core 项目、.NET Standard 项目和 UWP 项目 2. 如果确实有效,则没有参数指定目标框架。这与使用 packages.config 时的问题相同
-
你解决了这个问题吗?我有同样的问题
标签: .net visual-studio-2017 ravendb .net-standard