Roslyn 使用 Directory.Build.props 管理多個項目配置

在一些大項目需要很多獨立的倉庫來做,每個倉庫之間都會有很多相同的配置,本文告訴大家如何通過 Directory.Build.props 管理多個項目配置
在我的 MVVM 框架需要三個不同的庫,一個是 Framework 另外兩個是 WPF 和 UWP 這三個庫有很多重復(fù)的配置,如版本號和作者信息。
在之前,我每次發(fā)布的時候,我都需要修改三個不同的倉庫的版本號,將幾個版本號升級到最新,但是這個方法如大家所見,效率是很低的。
在我的另外的博客 Roslyn 通過 Nuget 管理公司配置 和 Roslyn 通過 nuget 統(tǒng)一管理信息 介紹了統(tǒng)一管理配置的優(yōu)點。
但是很顯然,我暫時無法使用 nuget 的方法統(tǒng)一幾個倉庫的配置,我需要一個新的方式。
在看到我之前的博客 Roslyn 使用 Directory.Build.props 文件定義編譯 可以知道,通過 Directory.Build.props 文件可以修改配置。
于是本渣就使用這個方法統(tǒng)一配置,我在項目的最外面添加了 Directory.Build.props 文件

我創(chuàng)建了 Build 文件夾,這個文件夾里面就放一個文件,這個文件就是管理版本號
Build\Version.props
<Project>
<PropertyGroup>
<Version>2.1.156</Version>
</PropertyGroup>
</Project>
現(xiàn)在的問題是如何讓 Framework 三個不同的倉庫引用這個文件,使用這個文件的版本號
通過 Directory.Build.props 添加下面的代碼就可以讓 Framework 項目找到版本號
<Project>
<Import Project="build\Version.props" />
</Project>
這樣就可以導(dǎo)入版本號文件,也就是可以讓 Framework 等項目引用這個文件
除了版本號也有很多的信息可以通過這個方式配置,如設(shè)置作者信息,作者的信息是屬性需要使用下面代碼
<Project>
<Import Project="build\Version.props" />
<PropertyGroup>
<Authors>lindexi</Authors>
</PropertyGroup>
</Project>
除了作者還有很多相同的信息,如倉庫的路徑,下面我就直接將所有可以用到的屬性寫出來,這樣大家可以復(fù)制下面的代碼到自己的 Directory.Build.props 通過修改信息定義自己的配置
<Project>
<Import Project="build\Version.props" />
<PropertyGroup>
<OutputPath>$(MSBuildThisFileDirectory)bin\$(Configuration)</OutputPath>
<!-- 打包的文件夾 -->
<PackageOutputPath>$(OutputPath)</PackageOutputPath>
<!-- 是否包括符號,默認(rèn)為 false 設(shè)置為 true 會創(chuàng)建 xx.symbols.nupkg 文件 -->
<IncludeSymbols>true</IncludeSymbols>
<!-- 作者名 -->
<Authors>lindexi</Authors>
<!-- 是否在每次重新編譯的時候創(chuàng)建 nuget 包 -->
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<!-- 在 nuget 設(shè)置的項目的 url 通過這個 url 可以在 nuget.org 看到項目主頁 -->
<PackageProjectUrl>https://github.com/lindexi/UWP/tree/master/uwp/src/Framework</PackageProjectUrl>
<!-- 在 nuget 設(shè)置項目的倉庫,通過這個 url 可以點擊到源代碼 -->
<RepositoryUrl>https://github.com/lindexi/UWP/tree/master/uwp/src/Framework</RepositoryUrl>
<!-- 版權(quán),很多時候都是寫 Copyright ? 2018 公司, All Rights Reserved. -->
<Copyright>MIT</Copyright>
<!-- 讓用戶安裝的時候看到的版權(quán)鏈接 -->
<PackageLicenseUrl>https://github.com/lindexi/UWP/blob/master/LICENSE</PackageLicenseUrl>
<!-- 在 nuget 設(shè)置標(biāo)簽 -->
<PackageTags>WPF;MVVM;UWP</PackageTags>
</PropertyGroup>
<ItemGroup>
<!--指定自己的在安裝 nuget 時修改編譯-->
<!-- 添加的 README 文件 -->
<None Include="$(MSBuildThisFileDirectory)README.md" Pack="True" PackagePath="" Visible="false"/>
</ItemGroup>
</Project>
上面的代碼的 $(MSBuildThisFileDirectory) 就是替換文件所在的文件夾路徑,更多請看 項目文件中的已知屬性(知道了這些,就不會隨便在 csproj 中寫死常量啦) - walterlv:https://blog.walterlv.com/post/known-properties-in-csproj.html
更多關(guān)于 Roslyn 請看 手把手教你寫 Roslyn 修改編譯 : https://blog.lindexi.com/post/roslyn.html
參見:Roslyn 入門 - CSDN博客
【推薦】.NET Core開發(fā)實戰(zhàn)視頻課程 ★★★
.NET Core實戰(zhàn)項目之CMS 第一章 入門篇-開篇及總體規(guī)劃
【.NET Core微服務(wù)實戰(zhàn)-統(tǒng)一身份認(rèn)證】開篇及目錄索引
Redis基本使用及百億數(shù)據(jù)量中的使用技巧分享(附視頻地址及觀看指南)
.NET Core中的一個接口多種實現(xiàn)的依賴注入與動態(tài)選擇看這篇就夠了
用abp vNext快速開發(fā)Quartz.NET定時任務(wù)管理界面
在ASP.NET Core中創(chuàng)建基于Quartz.NET托管服務(wù)輕松實現(xiàn)作業(yè)調(diào)度
現(xiàn)身說法:實際業(yè)務(wù)出發(fā)分析百億數(shù)據(jù)量下的多表查詢優(yōu)化
