无法从完整的 .NET 项目项目引用 .NET Core 类库
Posted
技术标签:
【中文标题】无法从完整的 .NET 项目项目引用 .NET Core 类库【英文标题】:Unable to project reference a .NET Core Class Library from Full .NET Project 【发布时间】:2016-11-18 03:54:09 【问题描述】:我正在尝试使用类库将我的 .NET Core 项目拆分为单独的关注点。我想要一个(或多个)类库和一个宿主项目。类库将定义 MVC 控制器和业务逻辑,而宿主项目将负责提供工作宿主。不幸的是,项目引用拒绝工作。
让我告诉你我为解决这个问题所采取的步骤。
-
在 Visual Studio 2015 Update 3 中创建空解决方案
创建一个名为 ClassLibrary1 的类型为 Class Library (.NET Core) 的项目
进入 project.json 并对其进行修改,使其如下所示。
创建一个名为 ConsoleApplication1 的类型为 Console Application(不是 .NET Core)的项目
右键单击 ConsoleApplication1 下的 References 并将 ClassLibrary1 添加为 项目引用。
引用存在于 ClassLibrary1 中的类型。
构建解决方案。
这将导致 ConsoleApplication1 项目中的构建失败,代码错误 CS0246:The type or namespace name 'ClassLibrary1' could not be found (are you missing a using directive or an assembly reference?)
。如果我没有将引用添加为 项目引用,而是浏览到 bin 文件夹并直接引用 dll,那么一切都会毫无问题地构建。但是,这不是一个解决方案,因为构建目标可能会改变,所以路径也会改变。
project.json的代码:
"version": "1.0.0-*",
"dependencies":
,
"frameworks":
"net452":
这是 Visual Studio 的错误,还是我做错了什么?我试过用netstandard1.2,net452,结果还是一样。
编辑 我在 .NET CLI Github 存储库中创建了一个问题。这是链接:https://github.com/dotnet/cli/issues/3926。
【问题讨论】:
您是否让 ClassLibrary1 在其 project.json 中以 netstandard1.2 为目标? 这个***.com/questions/38148128/…也有同样的问题? @enzian 是的,我试过没有成功。 @kurakura88 谢谢,但我已经调查过了,这不是重复的。我不是想将完整的 .NET 程序集引用到 Core 项目中,而是将一个普通的旧程序集引用到控制台应用程序中,它可以编译为 4.5.2。 【参考方案1】:我在 PCL 中遇到了与 Microsoft.NETCore 5.0.1 类似的问题。 它甚至没有找到 System.Object。
我尝试降级到 5.0.0 并为我解决了这个问题。
【讨论】:
您对潜在问题的分析是什么,您的建议如何解决这个问题? 我使用相同的库,而 NuGet 上的当前版本给了我大量类似的错误(找不到 XYZ)。它显然坏了。降级为我解决了这个问题。 我不知道是什么导致了这些错误(它们对我来说毫无意义),只是我如何解决它们。我不应该分享吗?我完全失去了你对我的期望。编辑:当然只是删除你写的内容。 如果您要分享您的经验(或:轶事数据),在对该问题的评论中这样做会更合适。如果您确实有一个适用于所有遇到此问题的用户的答案,并说明错误和解决方案,那么将其指定为答案是有效的。 好的。仅供参考:除了“这是一个错误”之外,您还期望有什么其他解释?我调试 Microsoft 库?因为我的决心肯定存在。以上是关于无法从完整的 .NET 项目项目引用 .NET Core 类库的主要内容,如果未能解决你的问题,请参考以下文章
如果无法识别引用,则使用Microsoft.NET.Sdk.Razor时发布失败,但构建工作正常
从 Asp.Net 4 项目进入引用的 .Net 3.5 程序集