簡體   English   中英

如何將 dll 作為引用包含在 nuget 中,當 nuget 添加到項目時,該引用也被復制為引用

[英]How do I include dll as reference in nuget that also gets copied as reference when nuget added to project

我們正在嘗試通過將它們托管在我們自己的 Artifactory 而不是在nuget.org 上來控制正在使用的 nuget 版本,同時嘗試將多個 nuget 打包成一個。

這方面的例子是Aspose

我想創建一個名為AsposeTools的新庫,它具有我們自己的輔助函數。

AsposeTools參考: Aspose.CellsAspose.PDF

當我在我的項目中安裝AsposeTools時,我想看到AsposeToolsAspose.CellsAspose.PDF以便我可以調用以使用我的輔助函數和實際的 Aspose 函數。 但我希望Apose.CellsAspose.PDFAsposeTools “安裝”,不是從我們的 artifactory 或 nuget.org 復制下來的依賴項。 原因是因為我們需要在我們的人工制品和工具中使用的東西中維護單元格和 pdf 的版本。

如何告訴依賴項從它存在的 nuget 中安裝,而不是從 nuget 源中安裝。

我嘗試在AsposeTools 中創建一個 libs 文件夾,並將額外的 dll 添加到該文件夾​​中,並將它們添加為引用。 然后,我嘗試了所有不同的構建操作選項,並將“復制到輸出目錄”設置為“始終”。 我能得到的最好結果是,從文件大小來看AsposeTools包含了額外的 dll,但我實際上無法在代碼中引用它們,只有我的輔助函數。 Aspose.CellsAspose.PDF實際上並未放置在項目引用中

編輯:我目前使用 .csproj 來構建 nuget

如果我的評論的猜測是正確的,您可以將這些Apose.Cells.dllAspose.PDF.dll設置為程序集引用,這樣它就不會將它們安裝為來自nuget.org nuget 包。

注意:它會丟失 nuget 包的任何依賴項,如果需要,您可以使用相同的方式自動添加它們。

1)Dependencies --> Properties上單擊這些 nuget 包,然后將它們的Private Asserts Asserts 設置為All

在此處輸入圖片說明

然后,右鍵單擊項目-->卸載項目,然后單擊重新加載項目以啟用設置。

2)進入項目的xxx.csproj文件,然后添加這些:

 <PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
 </PropertyGroup>

 <ItemGroup>
      <None Include="$(OutputPath)Aspose.Cells.dll" Pack="true" PackagePath="lib\$(TargetFramework)"></None>
      <None Include="$(OutputPath)Aspose.PDF.dll" Pack="true" PackagePath="lib\$(TargetFramework)"></None>

 // you can add any dependency dlls of the output folder in this way as you want

 </ItemGroup>

3)重新打包你的項目,當你安裝新版本時,你應該首先清理 nuget 緩存或者只是刪除C:\\Users\\xxx(current user)\\.nuget\\packages下的緩存文件。

當您安裝新的AsposeTools包時,它不會將其他兩個包安裝為來自nuget.org nuget 依賴nuget.org 並且它們僅被主項目引用,僅作為程序集引用並復制到輸出文件夾中。

ConsoleApp2是新的主項目,我已經在我的項目中安裝了新版本的AsposeTools包。 這是效果:

在此處輸入圖片說明

暫無
暫無

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

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