国产高清在线免费观看-国产高清在线免费无码-国产高清在线男人的天堂-国产高清在线视频-国产高清在线视频精品视频-国产高清在线视频伊甸园

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# 多項目打包時如何將項目引用轉為包依賴

freeflydom
2025年4月11日 8:37 本文熱度 370

項目背景

最近開發一組類庫,大約會有五六個項目。一個Core,加上若干面向不同產品的實現庫,A/B/C/D...它們都依賴Core.

首先,我想統一版本號,這個容易,通過Directory.Build.props設置。

其次,每個庫要單獨發包。

問題是在開發階段,子項目都是通過項目引用Core的,便于調試,怎么實現在打包時自動加上對Core包的依賴?

經過試驗,可以總結三種方法:

一、生成時將 ProjectReference 轉為 NuGet 依賴項 (Not Work)

這個DeepSeek推薦的方案,但很遺憾,我沒試驗成功。

它的項目結構是這樣的:

<ItemGroup>
  <ProjectReference Include="..\Core\MyProject.Core.csproj" >
    <PrivateAssets>all</PrivateAssets>
    <Publish>true</Publish>
    <Version>$(PackageVersion)</Version>
    <PackageId>MyProject.Core</PackageId>
  </ProjectReference>
</ItemGroup>
<Target Name="ForcePackageReferenceConversion" BeforeTargets="GenerateNuspec">
  <ItemGroup>
    <_PackageReferencesToAdd Include="@(ProjectReference->WithMetadataValue('Publish', 'true'))">
      <PackageId>%(PackageId)</PackageId>
      <Version>%(Version)</Version>
    </_PackageReferencesToAdd>
    <PackageReference Include="@(_PackageReferencesToAdd->'%(PackageId)')" Version="%(Version)" />
  </ItemGroup>
</Target>

它的核心思路是生成.nuspec前將項目引用強制轉換在包引用。

我也問了Github Copilot,它也說行,but...請有經驗的園友不吝賜教。

二、按條件引用

項目結構:

<ItemGroup>
  <!-- 開發時使用 ProjectReference -->
  <ProjectReference Include="..\Core\MyProject.Core.csproj"
                    Condition="'$(IsPackaging)' != 'true'" />
  <!-- 打包時使用 PackageReference -->
  <PackageReference Include="MyProject.Core"
                    Version="$(PackageVersion)"
                    Condition="'$(IsPackaging)' == 'true'" />
</ItemGroup>

然后使用命令生成:

dotnet pack -p:IsPackaging=true

此法可行。

三、指定.nuspec文件

最后,我又想到了用傳統的.nuspec文件。(我很喜歡以前的包管理方式,packages.config/nuspec,不理解為什么MS非要把所有的東西都往project文件里塞。)

項目結構:

  <!-- 指定自定義 nuspec 文件路徑 -->
    <NuspecFile>My.nuspec</NuspecFile>
    <!-- 傳遞 MSBuild 屬性到 nuspec 中的變量 -->
    <NuspecProperties>$(NuspecProperties);
      id=$(PackageId);
      version=$(Version);
      company=$(Company);
      authors=$(Authors);
      product=$(Product);
      copyright=$(Copyright);
      license=$(PackageLicenseExpression);
      projectUrl=$(PackageProjectUrl);
      repositoryUrl=$(RepositoryUrl);
      repositoryType=$(RepositoryType);
      icon=$(PackageIcon);
      config=$(Configuration)
    </NuspecProperties>

它將Directory.Build.props中定義的屬性一一賦給nuspec.

驗證可行。

轉自https://www.cnblogs.com/cnsharp/p/18819771?


該文章在 2025/4/11 8:37:16 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 亚洲精品久久久久久AV伊人 | 蜜臀国产在线视频 | 亚洲综合国产成人丁香五月激情 | 自拍日韩在线视频 | 毛片视频高清天堂国产精品高 | 欧美日韩中文国产一区发布 | 熟女视频人妻欧美国产精品麻豆成人a | 国产在线精品一区二区不卡 | 麻豆国产13p | 国产又爽又大又黄A片 | 亚洲无码一区二区在线观看 | 国产日韩在线欧美成人 | 精品无码久久久久国产三级网 | 亚洲日韩精品无码一区二区三 | 久久亚洲中文字幕无码 | 三级特黄60分钟在线观看 | 欧美国产精品va在线观看 | 欧美人与动人物牲交免费观看久久 | 国产91免费精品电影 | 无码专区人妻系列制服 | 中文字幕av人妻少妇一区二区另类www电影无码 中文无码字幕在线视频人妻资源18影院亚洲视频 | 午夜DJ国产精华日本无码 | 亚洲av无码国产一区二区 | 亚洲成v人片在线观看天 | 日本最新免费二区 | 亚洲国产成在人网站天堂网 | 中文字幕三区四区不卡在线观看 | 国产成人欧美日韩在线电影 | 午夜性猛交久久久 | 亚洲av成人在线网站 | 亚洲最大的熟女水蜜桃AV网站 | 精品熟女少妇av免费观看www毛片老师 | 亚洲av成人无码网站 | 91精品全国免费观看青青 | 亚洲另类激情专区 | 国产一级特黄老妇女大片免费 | 久久国产尿小便嘘嘘 | 亚洲一区精品动态图 | 97无码免费人妻超级碰碰夜夜 | 午夜伦理伦理片在线观 | 成人欧美一区二区三区在线观看 |