<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 3428字,需瀏覽 7分鐘

           ·

          2021-07-15 03:02


          在一些大項目需要很多獨立的倉庫來做,每個倉庫之間都會有很多相同的配置,本文告訴大家如何通過 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)選擇看這篇就夠了

          10個小技巧助您寫出高性能的ASP.NET Core代碼

          用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)化

          關(guān)于C#異步編程你應(yīng)該了解的幾點建議

          C#異步編程看這篇就夠了


          瀏覽 41
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产超级无码高清在线视频观看 | 99久久人妻无码中文字幕系列 | 色婷婷国产精品免 | www豆花视频 | 免费国产内射 |