asp.net-core – 如何使.NET Core类库从.NET 4.6项目引用?

asp.net-core – 如何使.NET Core类库从.NET 4.6项目引用?,第1张

概述我要: 创建一个定义一些接口和简单的通用助手类的类库。它将依赖于通用集合和IQueryable< T>但没有第三方依赖(嗯,JetBrains.Annotations)。 >能够从各地(特别是UWP,net46和ASP.Net Core RC2)引用类库, >理想的情况是,尽可能地使用project.json系统,尽管如果需要,我已经做好了牺牲。 >将完成的图书馆发布到NuGet Feed,并在其 我要:

创建一个定义一些接口和简单的通用助手类的类库。它将依赖于通用集合和Iqueryable< T>但没有第三方依赖(嗯,JetBrains.Annotations)。
>能够从各地(特别是UWP,net46和ASP.Net Core RC2)引用类库,
>理想的情况是,尽可能地使用project.Json系统,尽管如果需要,我已经做好了牺牲。
>将完成的图书馆发布到NuGet Feed,并在其他应用程序中使用它

在Visual Studio 2015.2中创建我的类库项目时,我发现了类库(.NET Core)模板

A project template for creating a class library as a NuGet package that can target any platform

任何平台!辉煌…但我不能让它上班。经过很多的讨价还价,我目前有以下project.Json(现在我已经完全打破了它):

{"Title": "My Really Useful Class library","copyright": "copyright © 2015-16 Tigra Astronomy,all rights reserved","description": "Really neat stuff","language": "en-GB","version": "1.0.0-*","dependencIEs": {    "JetBrains.Annotations": "10.1.4",},"frameworks": {    "netstandard1.5": {        "imports": "dnxcore50","dependencIEs": {            "NETStandard.library": "1.5.0-rc2-24027","System.linq.Expressions": "4.0.11-rc2-24027"            }        }    "net46": {        "frameworkAssemblIEs": {            "System.Collections": "4.0.*"            },"dependencIEs": {}        }    },"buildOptions": {        "xmlDoc": true        }}

接下来我做的是在同一个解决方案中创建我的.NET Framework 4.6项目,并尝试引用类库。它允许我添加引用,但是我正在生成错误,未解析的符号,R#不快乐等。

我想我不是正确的(不要惊讶,真的,因为我在黑暗中摸索着)。

我已经阅读了关于TFM,框架和图书馆的一些文档,但没有一个真的很有意义。

我真的需要放在我的类库的project.Json中,以便我可以从我的.net框架4.6应用程序以及UWP和ASP.NET Core RC2应用程序中引用它?这是真的正确的做法还是让我开始错脚?

解决方法 现在有两种创建C#项目的方法:xproj和csproj。假设我们正在为这两个项目使用project.Json,这对于项目类型仍然有不同的作用 – 对于xproj,project.Json包含构建项目所需的一切;对于csproj,它只包含nuget依赖项。

也就是说,一些项目类型,如UWP,由于需要比xproj / project.Json支持的更复杂的构建管道,因此无法使用xproj构建。 (BTW,这是回到msbuild的一个关键原因。)

还有两种创建基于.NET标准的类库的方式:可以像您所做的那样使用xproj与project.Json,或者您可以创建一个常规的csproj“便携式类库”项目。使用VS 2015 Update 3 RC,您可以将PCL更改为目标.NET Standard版本(netstandard1.x而不是PCL配置文件259)。

如果您使用基于csproj的类库来定位netstandard1.x,则在添加项目引用时,事情应该适用于您。请注意,UWP目前支持基于platform map的netstandard1.4。如果要使用基于xproj / project.Json的项目,那么挑战是。今天使用xproj的一个主要原因是在多个目标框架之间实现交叉编译。也就是说,从您的项目中创建多个输出。这与创建可以从任何兼容项目引用的单个输出不同。两者都有其用途,这取决于你的需要。

如果您决定创建基于xproj的类库,则可以使用解决方法从UWP项目或任何其他兼容的项目类型引用它,如果“添加引用”对话框不起作用(它不是csproj – > xproj几乎打破了)。而不是使用对话框,编辑您的UWP csproj来指向xproj的输出,如下所示:

<Reference Include="System.Reactive.Interfaces">  <HintPath>..\System.Reactive.Interfaces\bin$(Configuration)\netstandard1.0\System.Reactive.Interfaces.dll</HintPath></Reference>

上面的片段是从Rx.NET UWP Test Runner here中获取的

如果这样做,您还需要将构建依赖项从您的UWP项目添加到xproj,因为MSBuild / Visual Studio将不会知道它并以错误的顺序构建事物。为此,在解决方案资源管理器中右键单击您的UWP项目,然后选择“构建依赖关系 – >项目依赖关系”。在该对话框中,选中您的xproj的框,以确保VS / MSbuild首先构建该对象。

您可以在这里看到完整的Rx.NET解决方案,其中包括xproj-> xproj引用和UWP – > xproj参考我在上面提到。

总结

以上是内存溢出为你收集整理的asp.net-core – 如何使.NET Core类库从.NET 4.6项目引用?全部内容,希望文章能够帮你解决asp.net-core – 如何使.NET Core类库从.NET 4.6项目引用?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1248383.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存