.NETCore 您所在的位置:网站首页 netcore类库 .NETCore

.NETCore

2023-03-16 20:30| 来源: 网络整理| 查看: 265

我正在开始重新编写一组框架库以使用.NET Core.我以为我会等待RC2并且热衷于陷入困境.

我借此机会近距离接触构建系统,配置,从头开始编写代码以获得更深入的理解,并且没有我不想要/不需要的不必要的包袱.然而,缺乏文档使得这非常困难..所以我想在这里问一下,毫无疑问聪明的.NET核心人员正在隐藏;)

我知道这个问题很长,并且有很多子问题.但是我可以通过一个文档链接或者知道某人的一些简单线条来回答这个问题.感谢与我的关系,我希望这可能成为同一船上其他人的有用答案资源,试图了解.NET Core的一个好方法.

首先,global.json.我希望在同一个"解决方案"中有多个项目和组件.通过另一个SO问题,我发现了这个隐藏的链接:http://dotnet.github.io/docs/project-model/global-json-reference.html - 但似乎没有VS工具可以从头开始设置或使用它.

1)global.json问题

A)这些文档所指的构建系统是什么? dotnet build?(对此的帮助说它只是构建一个项目 - 如果它确实'解决方案' - 如果它仍然是名称 - 它是否只是dotnet build在所有子文件夹上运行?).

B)周围的许多例子都有一个"sdk"属性 - 但EF Core没有它,而新的"单句式"文档没有引用它. ASP.NET Core的官方RC2迁移指南有它还 在吗?如果是这样,为什么需要呢?有什么用?有什么选择吗?

接下来,到project.json和框架.我想了解框架的选项.有清单吗?官方指导? dotnet new使用netcoreapp1.0; "官方的文档"使用的例子dnxcore50,并从上个月这个GH的讨论也引发了一个问题netcore1.0,作为框架的可能性(VS应用程序).

而且,imports.我对命名感到非常困惑 - 文档谈到这是项目兼容的其他框架列表.

2)project.json框架问题 -

A)我在哪里可以找到围绕框架选项的最新或维护的列表或建议?

B)如果我对目的的理解import是正确的,为什么这样命名呢?如果没有,它究竟是什么进口的?

C)为什么import每个framework房产都有房产?如果它表明整个项目与另一个框架兼容,那么这似乎最好放在顶层project.json,不是吗?

D)我应该如何决定import应该使用哪些选项? dotnet new刚刚dnxcore50- 哪些包是满足的? 这家伙建议dotnet5.6,dnxcore50和portable-net45+win8!

最后,我正在构建类库,测试项目,控制台工具.所以..

3)参考和包

A)我总是想Microsoft.NETCore.App按dotnet new?还有其他基线选择吗?选择指导?一个列表?

B)文档没有提到关于type选项(build,platform)的任何内容.这些是否有任何指导?

C)我的一些项目将使用ASP.NET.哪里是找到正确套餐的最佳地点?NuGet上似乎有一百万个版本和软件包. 本教程只讨论引用Microsoft.AspNetCore.Server.Kestrel- 以及引用的唯一ASP.NET事物Microsoft.AspNetCore.Hosting.这是否意味着一个包是ASP.NET的大部分?

1> Thomas..:

你有很多问题.没有单一的文档,因为问题不是那么简单;)

global.json

global.json构建系统:global.json(作为project.json)不指定构建系统(例如msbuild csproj文件除外).目前,只有dotnet build可用(在VS中使用时由msbuild xproj代理).这将改变为msbuild因为完整的工具处于预览/测试版并且不会在6月底发布.它遍历所有子文件夹并构建东西.它也是查找本地项目引用的根节点.

global.json sdk:这是用于构建的sdk.新的cli也支持多个sdks,我认为这仍然用于选择.

project.json

project.json框架列表:我建议您阅读平台标准文档,并在那里找到当前框架标记的列表.本文档还将解决您(可能)提出的许多其他问题.一个完整的列表在NuGet项目文档中,但该列表再次被弃用,也没有那么有用.您的示例netcore是用于UWP(其运行时也称为.NET Core),而跨平台.NET Core使用的netcoreapp是NuGet文档中完全缺失的.

project.json导入:你到这里的目的是错误的.在project.json中,您可以指定构建库的实现的目标框架(例如netstandard1.6和net451).该import语句用于为目标框架指定的依赖关系,基本上说:如果TFM(例如netstandard1.6)在引用的库中不存在(因为NuGet是前一段时间构建的),我也接受这些导入一次(例如不推荐使用)dotnet5.6或dnxcore50).这是一个打破NuGet并允许使用尚未移动到新TFM的库的实用程序.它没有说明您的项目,但您接受使用哪些版本的依赖项.这需要针对每个目标框架的单独规范,因为NuGet库实现的接受可能因目标框架而异.

project.json导入用法:好吧,使用你需要的东西并删除你不需要的东西.当您引用尚未迁移到新TFM的NuGets时,您将收到错误.dnxcore并且dotnet在.NET Core项目上保存赌注,因为它们已经在当前的标记之前使用netstandard并且netcoreapp已经被创造出来.只是不要大胆地将net461基于/ mscorlib的NuGet实现添加到基于netstandard/System.Runtime的目标框架.这不起作用,是一个常见的错误.

依赖

dotnet新的默认模板:是的,对于ASP.NET和控制台应用程序来说,它始终是正确的选择.但是,这只是一个简单的控制台应用程序(Web应用程序也是控制台应用程序).使用Visual Studio在Linux下创建新的ASP.NET Core项目或yeoman以进行高级模板化.dotnet new不是一个完整的脚手架系统.新模板使用netcoreapp目标框架和Microsoft.NETCore.App元包来导入基本上所有可用的基类库.如果要创建库,请切换到netstandard目标框架并依赖于NETStandard.Library.您仍然可以添加其他依赖项.对于ASP.NET核心,没有可用的直接元数据包.指导在此结束.有一个称为修剪的过程,您可以在其中删除这些元包并添加具体的依赖项.但目前还没有适合它的工具.

project.json构建/平台依赖项:build依赖项本质上是工具,在构建期间不会发布.当你知道npm你知道这个方案时devDependencies.platform依赖项本质上是一个依赖项,它不与您的应用程序一起部署,而是作为.NET Core SDK的共享基本安装的一部分.您可以在术语"便携式应用程序"(即)和"自包含应用程序"(即没有它)下找到指导platform.

project.json元包/传递依赖:.NET Core和project.json引入了元包的概念.Microsoft.NETCore.App本质上是.NET Core命令行应用程序和NETStandard.Library类库的基线依赖项.所有这些包都可以拥有自己的代码和其他包的传递依赖.这些你也可以利用.作为示例,Microsoft.NETCore.App包引用NETStandard.Library再次引用System.Collections.Generic.因此,在您的应用程序中,Microsoft.NETCore.App您可以使用泛型集合.对于ASP.NET Core,情况有所不同,因为按需付费的理念对性能至关重要.对于高效的应用程序,您必须了解添加的内容.作为首发,您必须使用VS或yeoman等脚手架系统.的Microsoft.AspNetCore.Server.Kestrel(如纯文本)或Microsoft.AspNetCore.Mvc(用于Web API)及物包括大多数其他关键核心ASP.NET依赖.

免责声明:上述大多数主题都与工具有关,被视为"预览"."预览"表示"beta".即将发生重大变化(例如将构建系统从project.json切换回msbuild,或再次改进.NET标准).

我希望这能解答你的大部分问题.我认为在一个问题中回答所有问题是一个挑战;).



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有