运用.net core配合VS 2015制作nuget包

简介: 以往做nuget包我们一般要么用命令行,要么用nuget的图形化界面去做,但是一些操作比较麻烦.比如引入命名空间,引入第三方nuget包.今天,我们来讲解下一种全新的构建方式.   环境: win10 VS2015 企业版 .

      以往做nuget包我们一般要么用命令行,要么用nuget的图形化界面去做,但是一些操作比较麻烦.比如引入命名空间,引入第三方nuget包.今天,我们来讲解下一种全新的构建方式.

 

环境:

win10

VS2015 企业版

.net 全家桶(.net framework,dnx,.NET core)

 

Why:

      运用.net core+官方这种特殊类库项目,一切都可以用代码编辑完成,不需要做一些对我们来讲非常额外的工作,于是乎,构建变得无比简单.本人强烈建议以后做nuget类库的时候都用这样的方法.

 

步骤:

      环境搭建好后,我们在visual C#里面,新建一个类库(程序包)

      关于项目结构,参考参考链接,这里不做赘述.

      目前.net core尚不完善,system.web 都没了,于是我们要对默认的项目设置进行调整.

      打开project.json.这是项目描述,相当于以前nuget构建期间的xml,在框架节点,删除dotnet5.4

{
    "version": "1.0.0-*",
    "description": "FantasticCommonLibrary.Mvc.Core Class Library",
    "authors": [ "Z" ],
    "tags": [ "" ],
    "projectUrl": "",
    "licenseUrl": "",
    "frameworks": {
        "net45": {
            "dependencies": {
                "UAParser": "2.1.0"
            },
            "frameworkAssemblies": {
                "System.ComponentModel.DataAnnotations": "4.0.0.0",
                "System.configuration": "4.0.0.0",
                "System.Net.Http": "4.0.0.0",
                "System.Web": "4.0.0.0",
                "System.Web.Extensions": "4.0.0.0"
            }
        },
        "dotnet5.4": {
            "dependencies": {
                "Microsoft.CSharp": "4.0.1-beta-23516",
                "System.Collections": "4.0.11-beta-23516",
                "System.Linq": "4.0.1-beta-23516",
                "System.Runtime": "4.0.21-beta-23516",
                "System.Threading": "4.0.11-beta-23516"
            }
        }
    },
    "dependencies": {
        "FluentValidation": "6.1.0",
        "Microsoft.AspNet.Mvc": "5.2.3",
        "Newtonsoft.Json": "8.0.2"
    }
}

      保存以后,就会发现引用下面少了最新的那个框架.由于沿用旧的4.5.1点框架,生成也不再有意外.

 

      然后我们使用.net core的如下命令

cd <.xproj所在的那个目录>
:还原依赖项 dotnet restore :打包 dotnet pack

      之后在项目,bin/debug里面会看到2个文件:.nupkg和.symbols.nupkg.第一个文件就是我们想要的nuget包.至此,构建完成

 

      .nupkg是一个压缩包,用7z解压后打开里面的自述文件.nuspec.可以看到引用的nuget包和系统引用完好的在那里.

<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>FantasticCommonLibrary.Mvc.Core</id>
    <version>1.0.0</version>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <developmentDependency>false</developmentDependency>
    <authors>Z</authors>
    <owners>Z</owners>
    <description>FantasticCommonLibrary.Mvc.Core Class Library</description>
    <tags></tags>
    <dependencies>
      <group targetFramework=".NETFramework4.5">
        <dependency id="FluentValidation" version="[6.1.0, )" />
        <dependency id="Microsoft.AspNet.Mvc" version="[5.2.3, )" />
        <dependency id="Newtonsoft.Json" version="[8.0.2, )" />
        <dependency id="UAParser" version="[2.1.0, )" />
      </group>
    </dependencies>
    <frameworkAssemblies>
      <frameworkAssembly assemblyName="System.ComponentModel.DataAnnotations" targetFramework=".NETFramework4.5" />
      <frameworkAssembly assemblyName="System.Configuration" targetFramework=".NETFramework4.5" />
      <frameworkAssembly assemblyName="System.Net.Http" targetFramework=".NETFramework4.5" />
      <frameworkAssembly assemblyName="System.Web" targetFramework=".NETFramework4.5" />
      <frameworkAssembly assemblyName="System.Web.Extensions" targetFramework=".NETFramework4.5" />
    </frameworkAssemblies>
  </metadata>
</package>

 

bug:

  1. 目前.net core不支持中文目录,会乱码,导致找不到路径
  2. 项目有时生成失败,此时要删除project.lock.json.重新生成
  3. 引用System.Configuration的时候不知为何变成System.configuration(c变成小写),会导致构建失败.这时需要自己修改project.json的frameworkAssemblies节点.然后重新生成.

 

 

关于nuget一些文法的问题,请参见官方文档

 

参考链接:

.net core 官网

Create a New NuGet Package with DNX

nuget官方文档

 

目录
相关文章
|
13天前
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:&lt;https://github.com/khellang/Scrutor&gt;
35 5
|
2月前
|
存储 开发框架 JSON
ASP.NET Core OData 9 正式发布
【10月更文挑战第8天】Microsoft 在 2024 年 8 月 30 日宣布推出 ASP.NET Core OData 9,此版本与 .NET 8 的 OData 库保持一致,改进了数据编码以符合 OData 规范,并放弃了对旧版 .NET Framework 的支持,仅支持 .NET 8 及更高版本。新版本引入了更快的 JSON 编写器 `System.Text.UTF8JsonWriter`,优化了内存使用和序列化速度。
|
1月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
41 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
13天前
|
弹性计算 开发框架 安全
基于云效 Windows 构建环境和 Nuget 制品仓库进行 .Net 应用开发
本文将基于云效 Flow 流水线 Windows 构建环境和云效 Packages Nuget 制品仓库手把手教你如何开发并部署一个 .NET 应用,从环境搭建到实战应用发布的详细教程,帮助你掌握 .NET 开发的核心技能。
|
21天前
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
24 3
|
2月前
|
开发框架 .NET 测试技术
了解 .NET 9 中的新 Microsoft.AspNetCore.OpenApi 包,并将其与 NSwag 和 Swashbuckle.AspNetCore 进行比较。
本文介绍了 `.NET 9` 中新推出的 `Microsoft.AspNetCore.OpenApi` 包,该包旨在为 `ASP.NET Core` 应用程序生成 `OpenAPI` 文档。文章对比了 `NSwag` 和 `Swashbuckle.AspNetCore` 两大现有库,探讨了新包的优势和不足,特别是在性能和功能方面。尽管新包在某些方面尚不及成熟库完善,但其对原生 `AoT` 编译的支持和未来的扩展潜力使其成为一个值得考虑的选择。文章还提供了详细的性能测试数据和优化建议,适合对 `OpenAPI` 文档生成感兴趣的开发者阅读。
147 3
了解 .NET 9 中的新 Microsoft.AspNetCore.OpenApi 包,并将其与 NSwag 和 Swashbuckle.AspNetCore 进行比较。
|
2月前
|
开发框架 JavaScript 前端开发
一个适用于 ASP.NET Core 的轻量级插件框架
一个适用于 ASP.NET Core 的轻量级插件框架
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
50 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
80 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
57 0