title author date CreateTime categories
Roslyn 通过 Nuget 管理公司配置
lindexi
2018-9-19 10:57:5 +0800
2018-09-18 20:33:37 +0800
Roslyn MSBuild 编译器

本文来告诉大家如何用 Roslyn 管理配置,在开一个新的项目的时候经常需要添加公司,版权等,但是这些信息不想每次都添加于是我就想用 Nuget 管理所有配置,安装一个 nuget 就自动配置

我在公司很久都没开发过业务,我都是在做底层的库,于是我就需要创建很多个项目,只要我发现某个功能用到的一些代码可以在其他功能使用,我就会将这个代码抽到一个库。

在创建新的库的时候,我就需要添加下面配置

<Company>dotnet-campus</Company>
<Copyright>Copyright (c) 2018 dotnet-campus</Copyright>

在第二年的时候,我需要修改很多库的版权,修改为 2019 ,而从 VisualStudio 打开是很慢的,修改一个项目文件需要很长的时间

而且我的团队也有新人加入,我告诉他需要添加一些配置,但是每次的提交我都需要关注,是不是公司名没写对

最近我学到 Roslyn 的方法,通过 Nuget 添加配置,下面让我手把手告诉大家如何做一个配置。在上一篇文章Roslyn 通过 nuget 统一管理信息告诉了大家如何通过手动写文件的方式做一个 nuget 包,本文来告诉大家通过 VisualStudio 创建工程的方式打包。

对比两篇博客,会发现通过 VisualStudio 打包的方式会更加简单。

先通过 VisualStudio 创建一个 dotnet core 项目,这个项目实际不需要代码。

创建了一个项目之后需要在这个项目里面添加一些文件,假设创建的项目的名字是 lindexi 在这个项目创建 Assets 文件夹,然后在文件夹里面创建 lindexi.props 文件

这个文件将会作为 nuget 安装时使用的文件,在里面就填写配置

<Project>
<PropertyGroup>
<Company>dotnet-campus</Company>
<Owners>$(Company)</Owners>
<Copyright>Copyright (c) 2018 dotnet-campus</Copyright>
</PropertyGroup>
</Project>

这里的信息需要根据自己的需要写,通过这里写的内容就可以通过 nuget 安装到自己的项目

但是现在还不能做出一个 nuget 包,还需要在项目文件添加一些内容,右击工程点击编辑项目文件,在项目文件添加一些代码,请看下面代码

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup> <ItemGroup>
<None Include="Assets\**" Pack="True" PackagePath="build\" />
<None Include="Assets\**" Pack="True" PackagePath="buildMultiTargeting\" />
</ItemGroup> </Project>

在上面的代码就是添加了 Assets 文件夹,请看下面代码

  <ItemGroup>
<None Include="Assets\**" Pack="True" PackagePath="build\" />
<None Include="Assets\**" Pack="True" PackagePath="buildMultiTargeting\" />
</ItemGroup>

上面的代码的意思就是打包的时候添加 Assets 文件夹内的所有文件,在打包的时候添加到 build 和 buildMultiTargeting 文件夹下

现在右击项目打包就可以在 bin\debug 文件夹下找到 xx.1.0.0.nupkg 文件

这个文件可以通过 Nuget Package Explorer 打开,这个软件可以在应用商店下载,点击下载

打开可以看到下面的文件,这里包含的 build 文件和 buildMultiTargeting

现在可以通过安装这个 nuget 包的方式,测试这个包是否可以使用。安装本地的 nuget 包的方式很简单,通过在 nuget 设置的方法,具体请看Roslyn 通过 nuget 统一管理信息

这时我创建了一个新的 dotnet core 项目,然后在这个项目安装这个包,通过这个方式编译出来的文件,右击属性就可以发现这个 dll 的信息已经包含了。

当前现在还没做完,如果这时创建了一个 dotnet framework 4.5 的项目,会发现这个包无法安装,因为这个包的依赖是 dotnet core 2.1 ,所以需要添加一些代码让这个包可以在 dotnet framework 使用

右击编辑项目文件,修改 TargetFramework 为多个,请看代码

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp2.0;net35</TargetFrameworks>
<Version>1.6.0</Version>
<Description>林德熙是逗比</Description>
</PropertyGroup> <ItemGroup>
<None Include="Assets\**" Pack="True" PackagePath="build\" />
<None Include="Assets\**" Pack="True" PackagePath="buildMultiTargeting\" />
</ItemGroup> </Project>

这里将原来的 TargetFramework 修改为 TargetFrameworks 添加了其他的框架,具体可以使用的请看从以前的项目格式迁移到 VS2017 新项目格式

现在打出来的包还有影响到安装这个包的项目,还需要在项目文件做一些更改,请看代码

    <IsTool>true</IsTool>
<NoPackageAnalysis>true</NoPackageAnalysis>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<NoBuild>true</NoBuild>
<IncludeBuildOutput>false</IncludeBuildOutput>

具体上面的代码的意思请看项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - walterlv

从以前的项目格式迁移到 VS2017 新项目格式

Roslyn 通过 nuget 统一管理信息

2018-9-19-Roslyn-通过-Nuget-管理公司配置的更多相关文章

  1. IDC Digital Transition Annual Festival(2018.10.19)

    时间:2018.10.19地点:北京万达文化酒店

  2. 2018.10.19浪在ACM 集训队第一次测试赛

    2018.10.19浪在ACM 集训队第一次测试赛 待参考资料: [1]:https://blog.csdn.net/XLno_name/article/details/78559973?utm_so ...

  3. 20172319 2018.10.19《Java程序设计教程》第7周课堂实践(补写博客)

    20172319 2018.10.19 <Java程序设计教程>第7周课堂实践 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...

  4. AI Summit(2018.07.19)

    AI Summit 时间:2018.07.19地点:北京丽都皇冠假日酒店

  5. 3/19 Django框架 url路由配置及模板渲染

    3/19 Django框架 url路由配置及模板渲染 1.路由分配 URL(Uniform Resoure Locato):统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示, ...

  6. 2018.8.19 mybatis 环境搭建---配置mysql 。(Windows环境下面)

    安装mysql Install/Remove of the Service Denied!错误的解决办法 在windos 的cmd下安装mysql 在mysql的bin目录下面执行: mysqld - ...

  7. NuGet 自定义配置

    默认配置: 默认配置文件的路径%APPDATA%\NuGet\NuGet.Config (DOS) 或 $ENV:APPDATA\NuGet\NuGet.Config (PowerShell),(例如 ...

  8. NuGet:自定义配置信息(2)

    有些类库项目打包后,如何让别人引用的时候自动添加上对应的配置项目呢,比如EntityFramework的NuGet包,打开后可以看到类似下面的结构: 空白处右击——Add Content Folder ...

  9. 2018.7.19 . php复习

    PHP程序设计 1.请写出HTML标记meta的完整英文单词:metadata 2.相当于http文件头作用(向浏览器传回正确和精确地显示网页内容的消息)的meta标记的属性是http-equiv 3 ...

  10. 2018.5.19 Oracle数据操作和管理表的综合练习

    --作业一.使用自己的用户登录,完成如下操作,并且创建5条测试数据 -- 创建学生表(stu),字段如下: -- 学号(stuID) -- 姓名(stuName) -- 性别(stuSex) -- 入 ...

随机推荐

  1. JavaScript 实例、构造函数、原型对象关系图

    详细介绍:深入理解javascript原型和闭包(5)——instanceof 图片来源:https://www.ibm.com/developerworks/cn/web/1306_jiangjj_ ...

  2. win8 装的SQL Server2012 企业版

    链接:ed2k://|file|cn_sql_server_2012_enterprise_edition_x86_x64_dvd_813295.iso|5054384128|BC78EFDC4005 ...

  3. phpstudy安装好之后mysql无法启动(亲测可行)

    安装好phpstudy后,Apache可以启动,Mysql无法启动. 尝试解决办法:可能是之前已经装过Mysql,要把系统服务里面的MySQL删除,留下MySQLa服务. 在cmd命令行下输入:sc ...

  4. 文本流向 layout-flow

    作用与语法 文本流向layout-flow用来定义网页中的文本流向方式. 即排列方式,主要有两个属性,分别是horizonta (水平的) 和vertical-ideographic (垂直的). 文 ...

  5. docker-4-Dockerfile配置文件详解

    ​ Dockerfile简单一点就是描述你这个镜像安装了哪些软件包,有哪些操作,创建了什么东西.有些人喜欢用 docker commit 命令去打包镜像,这样是不好的,首先commit出来的镜像比你使 ...

  6. Ajax--PHP+JQuery+Ajax解析json、XML数据、加载页面

    一.JQuery+Ajax用get.post方式提交和请求数据 知识要点: $('#userName').blur(function () { var txt = $(this).val(); $.a ...

  7. 杨柳絮-Info:对抗杨柳絮的7种方法和2种防治手段

    ylbtech-杨柳絮-Info:对抗杨柳絮的7种方法和2种防治手段 园林养护人员在对抗杨柳絮上 主要有以下两种方法↓↓ 1.化学方法 化学方法是通过激素等调节剂来抑制植物发芽分化,达到减少杨柳开花的 ...

  8. ArcGISTiledMapServiceLayer

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>第一 ...

  9. fedora安装mod_python

    3.1 Installing mod_python To install mod_python, we simply run: yum install mod_python 3.2 Configuri ...

  10. Spring Boot 数据库连接池参数

    挑战A.I.,赢百万奖金......了解更多详情>>> Tomcat JDBC 连接池 Spring Boot 默认选择 Tomcat JDBC Pool 作为数据库连接池.Tomc ...