我正在写一个使用ASP.NET Core 2.0的MVC网站。禁用.NET标准2中的传递项目引用
在ASP.NET Core项目中(我们称之为Web
),我在同一个解决方案中引用了.NET Standard 2项目(我们称它为Service
)。 Service
项目也引用了解决方案中的第三个.NET Standard 2库(我们称之为Business
)。 Business
项目声明了一个名为Model
的类型。
的问题是,我可以在Web
项目中使用Model
(即编译器看到类型Model
,我可以做var a = new Model();
)仿佛Web
项目中引用Business
,但它实际上只需要Service
参考。如何隐藏Model
Web
?这是ASP.NET Core 2中的一项新功能还是所有.NET Standard项目都是这样的?
编辑
按照规定here,这是由于传递项目引用这是一个新的“功能”,在.NET标准,但如何解决?
我相信这是新项目格式('project.json'和'csproj'现在)的一个特性。任何嵌套的引用都可以直接在项目中使用(又名[transitive dependencies](https://github.com/dotnet/sdk/issues/200))。您可以尝试[这种方式](https://github.com/dotnet/project-system/issues/2313)将其关闭以供单个参考。 –
[.Net Core 1.1中的传递引用]的可能重复(https://stackoverflow.com/questions/42428571/transitive-references-in-net-core-1-1) –