Roslyn 使用 Directory.Build.props 管理多个项目配置
在一些大項目需要很多獨立的倉庫來做,每個倉庫之間都會有很多相同的配置,本文告訴大家如何通過 Directory.Build.props 管理多個項目配置
在我的 MVVM 框架需要三個不同的庫,一個是 Framework 另外兩個是 WPF 和 UWP 這三個庫有很多重復的配置,如版本號和作者信息。
在之前,我每次發布的時候,我都需要修改三個不同的倉庫的版本號,將幾個版本號升級到最新,但是這個方法如大家所見,效率是很低的。
在我的另外的博客 Roslyn 通過 Nuget 管理公司配置?和 Roslyn 通過 nuget 統一管理信息?介紹了統一管理配置的優點。
但是很顯然,我暫時無法使用 nuget 的方法統一幾個倉庫的配置,我需要一個新的方式。
在看到我之前的博客 Roslyn 使用 Directory.Build.props 文件定義編譯?可以知道,通過 Directory.Build.props 文件可以修改配置。
于是本渣就使用這個方法統一配置,我在項目的最外面添加了 Directory.Build.props 文件
我創建了 Build 文件夾,這個文件夾里面就放一個文件,這個文件就是管理版本號
Build\Version.props<Project><PropertyGroup><Version>2.1.156</Version></PropertyGroup> </Project>現在的問題是如何讓 Framework 三個不同的倉庫引用這個文件,使用這個文件的版本號
通過 Directory.Build.props 添加下面的代碼就可以讓 Framework 項目找到版本號
<Project><Import Project="build\Version.props" /> </Project>這樣就可以導入版本號文件,也就是可以讓 Framework 等項目引用這個文件
除了版本號也有很多的信息可以通過這個方式配置,如設置作者信息,作者的信息是屬性需要使用下面代碼
<Project><Import Project="build\Version.props" /><PropertyGroup><Authors>lindexi</Authors></PropertyGroup> </Project>除了作者還有很多相同的信息,如倉庫的路徑,下面我就直接將所有可以用到的屬性寫出來,這樣大家可以復制下面的代碼到自己的 Directory.Build.props 通過修改信息定義自己的配置
<Project><Import Project="build\Version.props" /><PropertyGroup><OutputPath>$(MSBuildThisFileDirectory)bin\$(Configuration)</OutputPath><!-- 打包的文件夾 --><PackageOutputPath>$(OutputPath)</PackageOutputPath><!-- 是否包括符號,默認為 false 設置為 true 會創建 xx.symbols.nupkg 文件 --><IncludeSymbols>true</IncludeSymbols><!-- 作者名 --><Authors>lindexi</Authors><!-- 是否在每次重新編譯的時候創建 nuget 包 --><GeneratePackageOnBuild>true</GeneratePackageOnBuild><!-- 在 nuget 設置的項目的 url 通過這個 url 可以在 nuget.org 看到項目主頁 --><PackageProjectUrl>https://github.com/lindexi/UWP/tree/master/uwp/src/Framework</PackageProjectUrl><!-- 在 nuget 設置項目的倉庫,通過這個 url 可以點擊到源代碼 --><RepositoryUrl>https://github.com/lindexi/UWP/tree/master/uwp/src/Framework</RepositoryUrl><!-- 版權,很多時候都是寫 Copyright ? 2018 公司, All Rights Reserved. --><Copyright>MIT</Copyright><!-- 讓用戶安裝的時候看到的版權鏈接 --><PackageLicenseUrl>https://github.com/lindexi/UWP/blob/master/LICENSE</PackageLicenseUrl><!-- 在 nuget 設置標簽 --><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
更多關于 Roslyn 請看?手把手教你寫 Roslyn 修改編譯?:? https://blog.lindexi.com/post/roslyn.html
參見:Roslyn 入門 - CSDN博客
總結
以上是生活随笔為你收集整理的Roslyn 使用 Directory.Build.props 管理多个项目配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单一职责在.NET中
- 下一篇: 在.NET Core中使用Channel