簡體   English   中英

如何為解決方案中的每個項目創建單獨的 nuget 包,並將項目引用轉換為 nuget 依賴項?

[英]How do I create an individual nuget package for each project in a solution, with project references converted to nuget dependencies?

我有一個看起來像這樣的解決方案。

在此處輸入圖片說明

我想為 ProjA、ProjB 和 ProjC 生成單獨的 nuget 包,我希望這個過程能夠檢測 ProjC 中上面顯示的項目引用,並將它們轉換為 nuspec 文件中的 nuget 依賴項,而不是僅僅包含 ProjA 的 dll和 ProjC nuget 包中的 ProjB,這就是我使用帶有 -IncludeReferencedProjects 選項的“nuget pack”命令時發生的情況。

此選項表示自動包含文件或將它們添加為依賴項,但始終包含它們,即使我希望將它們添加為依賴項。 奇怪的是,在我的 realword 解決方案中,項目引用之一總是被添加為依賴項,但其余的沒有,我無法弄清楚其中的區別。

我如何告訴 nuget 將它們添加為依賴項?

我希望引用是項目引用,因為它使開發更容易,而不是每次我想測試時都必須生成更新的本地 nuget 包。

但始終包含它們,即使我希望它們作為依賴項添加。 我如何告訴 nuget 將它們添加為依賴項?

假設您使用的是nuget pack命令而不是dotnet packmsbuild /t:pack

對於nuget pack xx.csproj -IncludeReferencedProjects命令,要確保引用的項目包含在具有nuget dependency格式的ProjC包中,您應該在引用項目的文件夾中添加相應的xx.nuspec文件

請參閱此處IncludeReferencedProjects的描述:如果引用的項目具有與該項目同名的相應.nuspec文件,則該引用的項目將作為依賴項添加 否則,引用的項目將作為包的一部分添加

所以這是解決方法:

1.對於我來說,我打開cmd.exe並導航到 ProjA 或 ProjB 的項目文件夾,使用nuget sepc命令在項目文件夾中為我創建一個ProjectName.nuspec

2.將ProjA.nuspec的內容ProjA.nuspec這樣:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>ProjA</id>
    <version>1.0.0</version>
    <title>This is title.</title>
    <authors>This is author.</authors>
    <owners>These are owners.</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>This is description.</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2019</copyright>
  </metadata>
</package>

現在導航到 ProjC 的文件夾並再次打包 ProjC, IncludeReferencedProjects將按預期工作。 要檢查這一點:重命名ProjC.nupkgProjC.zip ,並檢查生成的內容ProjC.nuspec文件中ProjC.zip文件。 您會看到類似<dependency id="ProjA" version="1.0.0" />

此外

1.由於您使用的是nuget pack命令並且您的項目目標是.net framework ,我建議您使用packages.config格式來管理三個項目的nuget包。

2.讓你的ProjC添加ProjA和ProjB作為nuget依賴: 除了使用IncludeReferencedProjects+ProjA.nuspec+ProjB.nuspec方式,其實我們可以簡單的創建一個ProjC.nuspec文件,添加如下內容來手動定義依賴。

    <dependencies>
      <dependency id="ProjA" version="1.0.0" />
      <dependency id="ProjB" version="1.0.0" />
    </dependencies>
  </metadata>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM