title author date CreateTime categories
Roslyn 通过 nuget 统一管理信息
lindexi
2018-09-04 08:55:19 +0800
2018-08-29 09:34:40 +0800
Roslyn MSBuild 编译器 nuget 打包

在日常的开发中,如果需要发布多个库,多个库之间的版权和作者等信息都是相同的。如果需要每次更改信息都打开项目进行编辑,这个效率是很低的。本文提供一个方式,通过安装一个 nuget 包就可以自动填写信息。

最近我多发布了一些项目,但是发布一个项目需要在 nuget 添加的信息有很多,如 authors 、 owners 、 Company 、 Copyright 而本渣很容易就忘记添加了一些值。

于是我就想,如何才可以让 Roslyn 自动帮我添加一些信息,特别是 Copyright ,因为一年就需要更新时间。

我就想在一个地方更新时间,然后在其他的地方都可以通过安装 nuget 的方式自动更新或通过更新 nuget 的方式更新。

特别是对新人,我就不需要告诉他发布一个 nuget 需要填哪些东西,也不需要担心因为他写错公司,只要他去安装 nuget 就可以。

在本文开始之前需要告诉大家,通过这个方式只能用来打开新的 VisualStudio 2017 格式的,而且是直接通过项目打包的方式,对于之前的格式不是很好用。

先创建一个空白的文件夹,现在是不需要通过 VisualStudio 创建项目,当然最后还是创建一个测试的项目,通过这个测试的项目可以 知道是不是成功让项目的信息管理。

创建的新的文件夹需要包含下面的文件

├── lindexi.nuspec

├─ build
├─────── lindexi.props
└─────── lindexi.targets

这里的文件包含的内容很少

一个可以使用的包需要包括下面内容

  • id 也就是唯一表示的字符串

  • version 版本

  • authors 作者

  • description 描述

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>lindexi</id>
<version>1.0.0</version>
<title>通过 nuget 管理信息</title>
<authors>lindexi</authors>
<projectUrl>https://lindexi.oschina.io/</projectUrl>
<description>在日常的开发中,如果需要发布多个库,多个库之间的版权和作者等信息都是相同的。如果需要每次更改信息都打开项目进行编辑,这个效率是很低的。本文提供一个方式,通过安装一个 nuget 包就可以自动填写信息</description>
</metadata>
</package>

现在右击将文件压缩为压缩包就可以做出一个 nuget 包了,只需要将 zip 后缀修改为 nupkg 就可以了。

现在使用 nuget 管理软件打开就可以看到了,通过应用商店搜索 nuget 就可以安装

或者点击下面的链接安装 https://www.microsoft.com/store/productId/9WZDNCRDMDM3

打开文件可以看到下面界面

如果可以看到这个界面就是成功创建了,当然引用 林德熙逗比 包是不可能的,但是如果是按照我上面的方法写的话是不会看到引用的。

现在需要在 build 文件夹的两个文件添加一些内容

lindexi.props

<Project>
<PropertyGroup>
<Authors>lindexi</Authors>
<Company>dotnet-campus</Company>
<Description>给安装的项目使用的</Description>
<Copyright>Copyright (c) 2018 dotnet-campus</Copyright>
<RepositoryUrl>https://lindexi.oschina.io/</RepositoryUrl>
</PropertyGroup>
</Project>
lindexi.targets
<Project> </Project>

可以看到 targets 只是空白的文件

现在重新压缩一下,修改后缀名

注意压缩需要将文件包含在根目录,也就是不能包一个文件夹再放文件

安装本地包

做出来 nuget 需要安装在一个项目,下面先创建一个控制台的项目,在这个项目设置 nuget 安装

右击项目nuget点击设置,然后点击添加

在添加的下面写出本地打包的文件,也就是 lindexi.1.0.0.nupkg 文件所在的文件夹和随意的一个命名

记得点击更新保存,然后再选择刚才设置的文件夹

现在点击浏览就可以看到刚才的 nuget 包

安装之后右击项目打包,就可以看到创建的项目打包,而且里面的信息就是刚才设置的信息

如果需要替换某个信息,例如修改 Description 的信息,就可以通过右击修改项目文件添加 Description 的设置就替换了默认的值。

使用这个方法就可以通过安装 nuget 的方式修改信息。

代码 Roslyn 通过 nuget 统一管理信息-CSDN下载

更多请看手把手教你写 Roslyn 修改编译

2018-9-4-Roslyn-通过-nuget-统一管理信息的更多相关文章

  1. .NET Core微服务之基于Steeltoe使用Spring Cloud Config统一管理配置

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 =>  Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...

  2. nuget 包管理器

    nuget 是.Net平台上的包管理器, 对于包的发布(打包 package)和消费(下载依赖管理)都有很好的支持, 本文仅仅关注消费端, =======================nuget项目 ...

  3. 利用log4j+mongodb实现分布式系统中日志统一管理

    背景     在分布式系统当中,我们有各种各样的WebService,这些服务可能分别部署在不同的服务器上,并且有各自的日志输出.为了方便对这些日志进行统一管理和分析.我们可以将日志统一输出到指定的数 ...

  4. 项目中angular js的接口url统一管理

    为了防止环境改变时需要修改多处接口的url,项目中用到了一个config.json文件来统一管理url: 在src下建立config文件夹,创建config.json文件,主要内容如下: { &quo ...

  5. 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架

    一直准备写这么一篇有关 SSIS 日志系统的文章,但是发现很难一次写的很完整.因为这篇文章的内容可扩展的性太强,每多扩展一部分就意味着需要更多代码,示例和理论支撑.因此,我选择我觉得比较通用的 LOG ...

  6. nuget包管理器控制台下的powershell脚本介绍

    http://personball.com/powershell/2016/07/15/powershell-tips 定制自己的powershell,减少重复工作 安装一系列自己的常用nuget包 ...

  7. Ext.net 异常统一管理,铥掉可恶的 Request Failure

    Ext.net 异常统一管理,铥掉可恶的 Request Failure 看着这样的框框是不是很不爽 灭他.也不难.. .如果全部页面都有继承一个自定义的父类 ..那整个项目代码量就只有几行了.. 单 ...

  8. 用slf4j统一管理日志总结

    用slf4j统一管理日志总结 参考网页:http://www.slf4j.org/ 一.使用slf4j统一管理并配置统一使用log4j日志 使用的jar:(slf4j-api-1.7.5.jar,jc ...

  9. 玩转mongodb(九):通过log4jmongo来实现分布式系统的日志统一管理

    背景 在分布式系统中,我们有多个web app,这些web app可能分别部署在不同的物理服务器上,并且有各自的日志输出.当生产问题来临时,很多时候都需要去各个日志文件中查找可能的异常,相当耗费人力. ...

随机推荐

  1. 这些Excel学会了,你做账的效率将大大提高

    这些Excel学会了,你做账的效率将大大提高 这些功能学会了,工作效率将大大提高. 1.excel的快速访问工具栏: 我的快速访问工具栏由左到右主要是"保存"."新建&q ...

  2. Docker安装elasticsearch-head监控ES步骤 - gmijie的专栏 - CSDN博客

    原文:Docker安装elasticsearch-head监控ES步骤 - gmijie的专栏 - CSDN博客 Docker安装elasticsearch-head监控ES步骤 docker拉取镜像 ...

  3. update当根据条件不同时 更新同一个字段的方法 或多表插入

    1.通过存储过程 循环 传值 create or replace procedure p_u isbegin for rs in (select distinct (rks) from rkbz)lo ...

  4. mysql8忘记密码的解决方法

    mysql8忘记密码的解决方法 1.管理员身份打开cmd,进入dos 2.停止mysql服务 命令:net stop mysql 3.无密码启动 命令:mysqld --console --skip- ...

  5. 计蒜客 Zoning Houses(线段树区间最大次大)

    Given a registry of all houses in your state or province, you would like to know the minimum size of ...

  6. UVA1204 Fun Game

    Fun Game https://odzkskevi.qnssl.com/8d698323a1e07d605cdeea708ee8a01d?v=1508703139 [题解] 不难发现如果一个串的原串 ...

  7. Thinkphp js、css压缩类minify

    说明:Minify 是用PHP5开发的应用,通过遵循一些Yahoo的优化规则来提高网站的性能.它会合并多个CSS或者JavaScript文件,移除一些不必要的空格和注释,进行gzip压缩,并且会设置浏 ...

  8. 【指南】本地如何搭建IPv6环境测试你的APP

    由于苹果最近更新IOS10之后他们的工作环境升级了,统一用IPV6网络,所以我们发出去的申请的APP不兼容IPV6的话,会通过不了审核! 所幸的是苹果会自动把你服务器要接的协议自动把iPV6转成IPV ...

  9. python学习笔记08-- socket编程

    本节内容: 一.网络基础知识 二.socket概念及相关语法 2.1socket概念 2.2socket解释 2.3socket模块功能介绍 2.4socket粘包问题 2.5Socket多并发 一. ...

  10. IntelliJ IDEA 下的SVN使用(傻瓜式教学)(转)

    第一步:下载svn的客户端,通俗一点来说就是小乌龟啦!去电脑管理的软件管理里面可以直接下载,方便迅速 下载之后直接安装就好了,但是要注意这里的这个文件也要安装上,默认是不安装的,如果不安装,svn中的 ...