CSharp工程中的多少个公文,如何移植

微软近几年推出.NET Standard,将.NET Framework,.NET
Core,Xamarin等目的平台的api进行规范和统1化,相当大地点便了类库编写人士的干活。简来讲之,类库编写职员在发布库的时候,只供给基于.NET
Standard举办业发布布,那么编写的次第能够在每一种目的平台上都能到运行。

集团的门类一向选用.NET框架来支付Web项目。近来基础类库均为.NET Framework
四.陆.贰本子。Caching, Logging,DependencyInjection,Configuration等基础设备相关的正视库一贯和法定保持同步,近期是一.壹本子。.NET
Core越来越趋于稳固,新的开垦工具也在十二月份发布。由此,陈设将.NET
Framework移植至.NET
Core/Strandard。目标是使基于.NET开垦的Web应用能够跨平台运维。

近年在看ASP.NET Core MVC的讲义,差不多每章开始都要重复从Empty
project早先创建3个ASP.NET
Core的连串,然后手动修改project.json,扩展优异3目录(Models,Controllers,Views)之类的,然后跟着基于这么些焦点类型开始展览介绍有个别特定的效应。

以下基于.NET Framework四.六及.NET Core二.0

.NET
Standard是一种标准,只要符合这一个正式的平台都得以运作基于此规范api塑造的程序。

按使用场景将商铺的门类分为基础类库,基础服务和行使项目。基础类库以包的花样提供各个基础功效。基础服务通过Wcf项目搭建或然经过Web
API项目搭建。应用类型则是Web
Mvc项目为主。基础类库和基础服务是以叁个1个消除方案的花样存在。各类化解方案的布局,包罗叁个要么五个类库项目,二个或多个调控台项目,它们分别用于作用达成、单元测试、作用演示。假使全体要移植,那么优先级应该是基础类库
-> 基础服务 -> 应用项目。本次移植的目的是基础类库。

那种示例代码每一次都再一次创造很未有技巧含量,日常都以复制粘贴,所以惦记把这有个别演示代码做成二个自动化的。以前有看齐有ASP.NET
Identity的言传身教的Nuget程序包,正是设置之后,自动创造了相关的类公事,同时也修改了web.config,最后效果是设置了package之后,直接能起来。

用以配置项目新闻,如:

深感挺好用的,然而其实用起来就有一些坑了。举个例子说那几个广阔的FileNotFoundException,当有那个景况的时候,日常出现:

基础类库最终会以包的样式通过NuGet公布出去,近年来只面向.NET
Framework框架。移植的靶子之1,是让包也能被面向.NET Core、.NET
斯坦dard框架的种类引用。结合合法资料,小编选用了直白迁移的方案。即直接将项目文件转换为新的基于.NET
Core的等级次序文件。上边详细表达移植的细节。

依据那个主张,也筹划创造3个ASP.NET Core
MVC的骨干示例Nuget包。于是从新复习了1个创办Nuget包的文档,开掘景况不是那么直接,用事先基于非.NET
Core的程序的创导包的方式,行不通。

  • 先后集名称、类型
  • Framework版本
  • 类型所包涵的文件新闻,如:cs、html、js、config、xml等
  • 花色所引述的主次集消息,包涵本地dll与Nuget包
  • 别的新闻

主程序的靶子平台是有个别具体平台(不是.NET Standard,举例说是.NET
Framework
肆.0),随后为了引进新的特征,升级了Framework为四.6.1,它同时引用了一个.NET
Standard类库,恰好,这些类库还引述了其余的package。(即传送引用A->B->C的花样,当中A是.NET
Framework程序,B是nuget包,C是B引用的nuget包。)在此情形下,假诺F五运维程序,就能够报FileNotFoundException。

  1. 新建基于.NET Core的体系。

查看了Nuget提供的文书档案表明(),也没找到很直接的印证怎样创设.NET
Core程序包的牵线文书档案,反而看到有介绍创设.NET
Standard程序包的文书档案。那是怎么状态,按道理不可能,或然方向不对?直接bing了弹指间,也远非找到stackflow上的最棒答案,其实也没长远去找,作者是以为自个儿走错了方向。

Visual Studio中对品种所做的布局,均可在该文件中突显出来。同样,Visual
Studio也是依据该公文中的内容来加载项目的。抛开Visual
Studio的别的功效,能够将其当作是.csproj文件的图样管理工科具。

测试条件
Visual Studio 2015 Community
测试用包:UnifiedConfig v1.壹.陆

先是重命名现成项目文件*.csproj为*.Net四陆.csproj。然后利用VS20一7新建二个新的基于.NET
Core的档期的顺序,项目项目能够是“类库(.Net Core)”大概“类库(.Net
斯坦dard)”。注意,VS201七会提示存在同名目录,所以成立时得以输入二个不等的名号,然后手工业调节回来。

于是乎把介绍成立.NET
Standard的文书档案()看了一次,看到前方的介绍终于领会了,原来是换了个壳,未有从前那么直接了,必须通过创制.NET
斯坦dard包的不贰秘诀完成对.NET Core程序的支撑。

选择Visual Studio创立Web项目(MVC或Web
Api)时,会在根目录生成Web.config文件。成立调控台程序则会生成App.config文件。以Web.config为例,该公文用于配置Web项目周转时所需的信息,如:

提醒未找到System.IO.FileSystem。乍看认为是三个简便的引用错误,但unifiedconfig包里面早已数见不鲜引用了这几个连串,按道理vs能够平常帮大家管理引用难题。到文件输出路径中查阅,发掘对应的包未有科学复制过来。手动从package文件夹中复制过来,难题化解。

美高梅开户网址 1

干什么是.NET Standard?.NET
Standard定义了协理全部.NET平台的BCL程序集API,理论上说.NET
Standard帮衬下的顺序集能够在四个不等的.NET平台运维,比方.NET
Framework,.NET Core, Mono等等。而对此不一致的.NET平台,对.NET
Standard的版本援助也分化,完结的支撑列表可参照的表明,下图是援引自官方网站的三个本子支持图

  • Framework版本音信

    <system.web> <compilation debug="true" targetFramework="4.6.2"/> <httpRuntime targetFramework="4.6.2"/></system.web>
    
  • 编写翻译器消息

    <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/> </compilers></system.codedom>
    
  • 所引用的先后集新闻

    留神,这里所引用的是类型在运作时所需的顺序集,而.csproj中讲述的次序集是连串中加上的引用,2者有分别:项目中加多的引用在运作时不致于会用到。

    <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/> <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="0.0.0.0-5.2.4.0" newVersion="5.2.4.0"/> </dependentAssembly> </assemblyBinding></runtime>
    

    若项目运维后报错:未能加载文件或程序集“XXXXXX”或它的某一个借助项,找到的程序集清单定义与程序集引用不包容,则应当检查下项目所引用的dll文件与Web.config中布置的dll文件新闻是或不是同样。

    点击这里,可查阅关于配置文件中bindingRedirect的表达。

由来出在这几个跨平台上。由于存在引用传递,B不能够明确须要复制哪个目的平台的package到A的输出路线。当程序是从旧的Framework进级而来的时候,旧版的品类文件不可能很好地管理.NET
Standard的那个主题材料。但大家手动叁个3个复制也不是艺术,以下给出化解方案。

 

美高梅开户网址 2

.NET Core官方项目模板中默许不生成App.config或Web.config。注意,.NET
Core项目(Console、ASP.NET
Core)本质上是调节台程序,若要使用XML格式作为配置文件,提出选取App.config。

解决方案:

  1. 编纂项目文件,使之帮忙面向七个目的框架。

参照需求支持的.NET平台的本子,能够观看平台支撑的参天版本的.NET
Standard的版本号,同时也证实辅助此前版本的.NET Standard。

Windows系统中,可通过%AppData%\NuGet\NuGet.config对Nuget实行安顿,文件结构如下:

  1. 最直接的方案,修改主项目标.csproj文件,将<RestoreProjectStyle>PackageReference</RestoreProjectStyle>拉长到第陆个PropertyGroup
  2. 假诺还百般,加上<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    或者

经过VS20壹七 LANDC新建的品类,“类库(.Net Core)”可能“类库(.Net
Standard)”,私下认可唯有三个目的框架。大家得以编写制定项目文件,使之援救面向七个对象框架。如援助对象框架为.NET
Standard 一.四、.Net Core App 壹.0和.NET Framework 四.5,则那样来修改。

美高梅开户网址,说的可比生硬,举个例子作者这边需求援救.NET Core程序,而且是.NET Core
一.0版本,那么这么些本子援助的最高.NET
Standard版本是一.六,同时也相称一.陆事先的版本。

<?xml version="1.0" encoding="utf-8"?><configuration> <config> <add key="globalPackagesFolder" value="D:\Dev\Nuget\Packages" /> </config> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> </packageSources> <packageRestore> <add key="enabled" value="True" /> <add key="automatic" value="True" /> </packageRestore> <bindingRedirects> <add key="skip" value="False" /> </bindingRedirects> <packageManagement> <add key="format" value="0" /> <add key="disabled" value="False" /> </packageManagement> <disabledPackageSources> </disabledPackageSources></configuration>
  • 在工具->nuget包管理器->程序包管理->暗中同意包管理格式,从Packages.config改成PackageReference。
<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
      <TargetFrameworks>netstandard1.4;netcoreapp1.0;net45</TargetFrameworks>
    </PropertyGroup>
</Project>

好了前面介绍了一下背景知识,那么驾驭完之后大家就很明亮尽管要创设支持.NET
Core的Nuget包,那么大家需求成立多个帮忙.NET
Standard的Nuget包,并且安装帮助的本子就可以。

packages.config是连串中用于管理Nuget包的引用的文书,对于Nuget包的操作(增添、删除与版本改变)都会议及展览示到该公文中。也能够一向操作该公文来修改项目中的Nuget包,但不提出那样做。文件结构如下:

后记

本身回想在visual studio 20一柒早期版本还留存那么些bug,进级之后visual studio
2017
1伍.陆.四以此本子测试新建项目,已经未有那么些主题材料。并且默许生成的依靠四.5.二之上Framework的.csproj文件已经增进<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>其1布局。可是当老版本的品种引用.NET
Standard类库的时候,还是时常会并发这些标题,那时候,就必要大家手动增添配置项目了。

CSharp工程中的多少个公文,如何移植。小心,官方文书档案中提供了.NET补助的目的框架列表,你能够查询越来越多其余的靶子框架。假诺要合作极低版本的框架,则目的框架版本不宜设置过高。如“net4伍”可用于.NET
Framework 四.5 ~ 4.六.二等版本。如“net四陆”则不得不用于.NET Framework 四.陆 ~
4.6.2等版本。

组合Nuget官方的文书档案,我们一步步来创立并宣布3个德姆o版的支持.NET Core
1.0本子的Nuget包。

<?xml version="1.0" encoding="utf-8"?><packages> <package version="6.2.0" targetFramework="net462" /> <package version="5.2.4" targetFramework="net462" /></packages>
  1. 修改应用程序代码相关API,使之帮助两个指标框架。

一 用Visual studio 20一5新建1个Class Library Portable项目

暗中认可在sln文件所在目录下会生成packages文件夹用于存放项目引用的Nuget包:

a.
因目的框架提供的API不雷同。故要求时可加多条件编写翻译符号以便扶助差异的运作时版本。

美高梅开户网址 3

美高梅开户网址 4packages_floder

以下是常见的规范化编写翻译符号列表。

项目名称自定义,常常用于最终Nuget包的名目

大家通过Nuget命令行或许Visual
Studio中的图形分界面来治本Nuget包,当Nuget包爆发更动时,packages.config与.csproj文件内容及packages文件夹都会时有发生相应的改换。如,大家增添对Dapper的引用后

.NET Framework 2.0 –> NET20
.NET Framework 3.5 –> NET35
.NET Framework 4.0 –> NET40
.NET Framework 4.5 –> NET45
.NET Framework 4.5.1 –> NET451
.NET Framework 4.5.2 –> NET452
.NET Framework 4.6 –> NET46
.NET Framework 4.6.1 –> NET461
.NET Framework 4.6.2 –> NET462
.NET Standard 1.0 –> NETSTANDARD1_0
.NET Standard 1.1 –> NETSTANDARD1_1
.NET Standard 1.2 –> NETSTANDARD1_2
.NET Standard 1.3 –> NETSTANDARD1_3
.NET Standard 1.4 –> NETSTANDARD1_4
.NET Standard 1.5 –> NETSTANDARD1_5
.NET Standard 1.6 –> NETSTANDARD1_6

二 点击鲜明以往弹出选拔必要的Targets,也正是协理的.NET平台

packages.config:

 关于标准编写翻译符号的采用,如以下代码:

美高梅开户网址 5

<?xml version="1.0" encoding="utf-8"?><packages> <package version="1.50.0" targetFramework="net461" /></packages>
using System;
using System.IO;
namespace Baza.NetStandardTester
{
    public class PathHelper
    {
        public string BaseDirectory { get; set; }
        public PathHelper()
        {
#if NET45
            BaseDirectory = AppDomain.CurrentDomain.BaseDirectory;
#endif
        }
        public string GetRootedPath(string path)
        {
            string rootedPath = path ?? string.Empty;
            if (!Path.IsPathRooted(rootedPath))
            {
                if (string.IsNullOrEmpty(BaseDirectory))
                    throw new ArgumentNullException("请先设置BaseDirectory属性");
                rootedPath = Path.Combine(BaseDirectory, rootedPath);
            }
            string directory = Path.GetDirectoryName(rootedPath);
            if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }
            return rootedPath;
        }
    }
}

这里采用援助.NET Framework和ASP.NET Core

.csproj:

代码表明,PathHelper提供GetRooted帕特h方法用于依照相对路线总结出相对路线。当运维时为.NET
Core时,BaseDirectory属性需求手动设置。当运转时为.NET Framework
肆.5时,由构造器对BaseDirectory属性进行赋值。注意System.AppDomain.CurrentDomain.BaseDirectory用于获取托管程序推行路线,类AppDomain只存在于.NET
Framework中。

3.点击OK之后,项目开创落成,然后右键点击化解方案,张开属性窗口

<?xml version="1.0" encoding="utf-8"?><Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <Reference Include="Dapper, Version=1.50.0.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>..\packages\Dapper.1.50.0\lib\net451\Dapper.dll</HintPath> </Reference> </ItemGroup></Project>

b. .NET
斯坦dard是个基于包的框架。当你需求有个别API时,如IDataReader,你必要设置System.Data.Common包。假诺是使用.NET
Framework,则在命名空间System.Data下能够找到IDataReader而没有须求服从包。借助工具,你可以神速稳固某些API在哪些包中。

美高梅开户网址 6

若一贯改变packages.config中的内容,如,直接删除packages.config中对有个别包的引用,.csproj文件中仍然保留了对该包的引用,及packages文件夹中也会保留该包。那样很有非常大希望产生品种引用的繁杂,所以,不提出直接操作packages.config文件。

c. 基于.NET
Core的门类,包版本号和任何元数据,都存款和储蓄在*.csproj中,不会选择AssemblyInfo.cs文件,即移植时,那一个文件能够去除。可是.NET
Framework项目照旧会连续使用该文件。

慎选点击”Target.NET Platform
斯坦dard”,之后会有二个Confirm,当然是采纳“Yes”

.NET
Core项目中不在使用packages.config文件文件管理Nuget包,对于Nuget包的引用直接展示到.csproj文件中:

  1. 壹律消除方案,类库间的引用攻略。

美高梅开户网址 7

<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.1</TargetFramework> </PropertyGroup> <ItemGroup> <Folder Include="wwwroot\"/> </ItemGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.App"/> <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All"/> </ItemGroup></Project>

在引用类库时,要注意目的框架的包容难题。如,“类库(.Net
Standard)”项目,能够被.NET Core App、.NET Framework和别的.NET
Standard项目引用。这一个是因为.NET Core App和.NET
Framework都帮衬相应版本的.NET标准库。下表彰显了支撑
.NET 规范库的任何 .NET 运营时。

下一场属性窗口的Target产生了2个下拉精选,这里大家采取.NET
Standard一.4本子就能够(依照版本扶助图,.NET Core 一.0足以援救那几个版本)

sln文件所在目录下也未曾packages文件夹。Windows系统下.NET
Core中Nuget包放在%UserProfile%\.nuget\packages

平台名称 Alias                
.NET Standard netstandard 1.0 1.1 1.2 1.3 1.4 1.5 1.6 2.0
.NET 核心 netcoreapp 1.0 vNext
.NET Framework net 4.5 4.5.1 4.6 4.6.1 4.6.2 vNext 4.6.1
Mono/Xamarin 平台   vNext
通用 Windows 平台 uap 10.0 vNext
Windows win 8.0 8.1          
Windows Phone wpa 8.1          
Windows Phone Silverlight wp 8.0              

美高梅开户网址 8

能够使用.NET Core提供的CLI中的命令来获得nuget包的岗位:

留神,假如项目是面向多目标框架的,那么引用类库时,被引用类库也要支持面向多目标框架。

而后再行Confirm,Yes

dotnet nuget locals all -linfo : http-cache: C:\Users\xfh\AppData\Local\NuGet\v3-cacheinfo : global-packages: C:\Users\xfh\.nuget\packages\info : temp: C:\Users\xfh\AppData\Local\Temp\NuGetScratchinfo : plugins-cache: C:\Users\xfh\AppData\Local\NuGet\plugins-cache
  1. 单元测试

美高梅开户网址 9

也能够运用Nuget本人命令来收获nuget包地方:

1旦是使用.NET
Framework类库项目来存放在单元测试代码,那么大概会遇见一些主题素材。在VS20一柒奇骏C中,测试能源管理器不可能分辨出那么些测试单元。通过新建“单元测试项目(.NET
Framework)”,将转换的同名*.csproj覆盖原来的品种文件,测试处理器就能够识别出来。

三 设置Build,选取Release,并勾选中XML documentation file,前边需求动用

nuget locals all -linfo : http-cache: C:\Users\xfh\AppData\Local\NuGet\v3-cacheinfo : global-packages: C:\Users\xfh\.nuget\packages\info : temp: C:\Users\xfh\AppData\Local\Temp\NuGetScratch

美高梅开户网址 10

美高梅开户网址 11

以上,是投机的一些计算,与大家享受。

  1. MSBuild自动编写翻译新的消除方案

4到此项目的习性设置完结,然后把默许生成的Class壹改一下,好歹改成一些有含义的东西,作者改成如下内容。

Assembly Binding redirect: How and Why?

Windows下,按Release配置对全体消除方案编写翻译。

public class Demo
{
    public void Run()
    {
        Console.WriteLine($"You're using my demo package at {DateTime.Now.ToString(CultureInfo.InvariantCulture)}");
    }
}
"c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe" XXX.sln /p:Configuration=Release;Platform="Any CPU"

伍项目代码已经够用了,接下去使用Nuget命令行工具,Nuget命令行工具用的是三.5版本,官方有得下载,这里把Nuget.exe文件放到了系列根目录下。

会在连锁类库根目录下\bin\Release目录中,生成net四陆和netstandard一.陆七个目录。

美高梅开户网址 12

  1. 使用dotnet-nuget-push发布包

6 然后CMD到项目所在的目录,运营nuget
spec,创造八个spec文件,那几个文件干嘛的不多说了,官方文书档案有详细表明

选择vs201七打包时,只需右击要打包的连串,选取“打包”,就能够在.\bin\Debug或.\bin\Release下生成XXX.0[.0].0.nupkg文件,然后将这一个文件.nupkg上传至nuget.org中。通过调用dotnet-nuget-push能够自动化这一个发表进程,因而那种艺术会进一步方便。

nuget spec

dotnet nuget push XXX.0[.0].0.nupkg -k 4003d786-0000-4004-bfdf-c4f3e8ef9b3a -s http://customsource/

下一场拿走几个Shenba.德姆oPackage.Core.nuspec文件

k:服务器的 API 密钥 s:服务器 U普拉多L,如发布到nuget.org,则能够这么写。

柒 用文件编辑器,比方notepad++编辑Shenba.德姆oPackage.Core.nuspec文件

dotnet nuget push XXX.0[.0].0.nupkg -k 4003d786-0000-4004-bfdf-c4f3e8ef9b3a -s https://www.nuget.org/api/v2/package

把各类$符号的变量都改成本身的故事情节,比如如下内容

平常在windows下,会将dotnet-nuget-push写在批管理文件中来变成宗旨类库的配置职业。

<?xml version="1.0"?>
<package >
  <metadata>
    <id>Shenba.DemoPackage.Core</id>
    <version>1.0.0</version>
    <title>Shenba.DemoPackage.Core</title>
    <authors>shenba</authors>
    <owners>shenba</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>demo package for dotnet core</description>
    <releaseNotes>demo package for dotnet core released.</releaseNotes>
    <copyright>Copyright 2017</copyright>
    <tags>dotnet core demo package</tags>
  </metadata>
</package>

总结

留意id不要一样,不然前边无法交付

通过此方案迁移后,最后保留新的消除方案和档案的次序文件,旧的减轻方案和连串文件在移植的经过中被删去。之后将安分守己新的消除方案来跨平台支付。基本类库的移植专业就介绍到那边。源代码的移植将是个挑衅。譬如部分源码所引用的API在.NET
Core框架下不设有时怎么管理?别的,基础服务和Web
Mvc项目标移植,因为要计划到linux中。也将会超出种种难点。

八继续编辑nuspec文件,参加<files>节点(跟metadata2个等第),并设置剧情如下

参考财富

<files>
    <file src="bin\Release\Shenba.DemoPackage.Core.dll" target="lib\netstandard1.4\Shenba.DemoPackage.Core.dll" />
    <file src="bin\Release\Shenba.DemoPackage.Core.xml" target="lib\netstandard1.4\Shenba.DemoPackage.Core.xml" />
</files>

1. 团队项目以协理 .NET Framework 和 .NET
Core

玖在Release配置下,编写翻译解决方案后,在命令行实施如下命令(仍然在类型的根目录下)

2. dotnet-nuget-push

nuget pack Shenba.DemoPackage.Core.nuspec

3. packagesearch.azurewebsites.net

然后会扭转三个Shenba.DemoPackage.Core.一.0.0.nupkg文件,那些就是最后要颁发的包文件

4. .NET
标准库

事实上那是3个压缩包(把后缀名改成zip),能够用RAHighlander工具查看里面包车型大巴文件结构,如下图

5. Developing Libraries with Cross Platform
Tools

美高梅开户网址 13

6. Target
Frameworks

美高梅开户网址 14

7. Porting to .NET Core from .NET
Framework

美高梅开户网址 15

能够见见在这之中包蕴了科普的lib目录,并且展开后是netstandard一.四索引,然后是现实的程序集文件和XML文书档案。

十 接下去正是把这一个包宣布到nuget.org

布告到nuget.org需求运用自身的账号公布,假设经过命令行公布还索要扭转本身的3个APIkey,具体能够参考的说明。

此处给出发表的package的命令行,在这之中XXXX是挂号后获得的API key

nuget push Shenba.DemoPackage.Core.1.0.0.nupkg XXXX –Source nuget.org

1一 push之后是不能够即时在nuget搜索到的,那跟在此以前的非.NET
Standard的是平等的,可是能够在自个儿的Account下观察通知的包

美高梅开户网址 16

1二 在.NET Core项目中选用刚发布的德姆o package

以此跟使用普通的.NET
Core的Package同样,修改project.json也许接纳界面包车型大巴package
manager引进,比方直接在project.json的dependencies节点参预package的引用

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.1"
    },
    "Shenba.DemoPackage.Core": "1.0.0"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": "dnxcore50"
    }
  }
}

封存之后自然也会自行的restore,然后会显示在引用中

美高梅开户网址 17

理所当然代码里调用这么些package的类也是没不寻常的,调用代码就背着了,正是个示范而已。

一三 在.NET Framework 4.6.1的体系中运用该德姆o package

1初始波及这么些package是基于.NET Standard一.四版本的,依据版本帮助图,.NET
Framework 四.6.一的品种也是足以引用那一个包的。

新建三个.NET Framework 四.⑥.壹的调节台项目,package调控台运维

Install-Package Shenba.DemoPackage.Core

同样也是能正确被引用和调用的,下边是packages.config的始末

<packages>
  <package id="Shenba.DemoPackage.Core" version="1.0.0" targetFramework="net461" />
</packages>

 

小结

上述是创办并颁发2个可用于.NET Core(当然也可用于.NET
Framework)的Nuget包过程,差不多流程跟发布普通的Nuget包同样,但须要专注采用需求援助的.NET
Standard的版本。

继承会企图一个进一步有意义的.NET
Core包,可用以生成ASP.NET MVC Core的读书示例代码。

(目前本着dotnet
core项目标nuget包,还不支持推行包里的代码模板和识别Content内容,所以权且不可能得以实现

端详参考

以此德姆o的演示代码路线

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图