簡體   English   中英

在不同的 netstandard2.0 庫 NU1202 中安裝 netstandard2.0 Nuget 包

[英]Installing a netstandard2.0 Nuget Package inside a different netstandard2.0 library NU1202

我目前正在為一些看起來很簡單的事情而苦苦掙扎,但我無法找到任何有類似問題的人。

我正在將一些庫轉換為 netStandard,一個依賴於另一個。 我們稱它們為 A 和 B。

A 正在編譯為 netStandard2.0 庫,根據目錄中的 dotnet --version 使用 3.1 SDK 構建。 nupkg 內置在 Release 文件夾中,我將其移動到本地包源以在我的盒子上進行測試。

B 也是一個 netStandard2.0 類庫。 它需要 A,但是在 NuGet Package Manager for B 中導航到我的 nupkg for A 並單擊安裝會生成一個奇怪的錯誤。

NU1202 A 不兼容 netStandard2.0,Package A 支持:netcoreapp2.1

A 是一個 netStandard 庫。 B 是一個 netStandard 庫。

當我查看標簽中的 A.csproj 文件時,我看到:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <Description>The initial .net standard 2.0 offering of A</Description>
  </PropertyGroup>
</Project>

所以它似乎是針對 netStandard2.0(包括 netFramework 4.6.1 到 netCore 2.2?)

我錯過了一些簡單的東西嗎?

在使用 nu1202 和 netStandard2.0 進行谷歌搜索后——主要是想出了一個場景,A 是一個庫,B 是一個應用程序,而不是像我的情況 B 是一個庫——我提出:

我基於不同問題嘗試過的事情

  1. 確認每個 A/B 項目的 dotnet --version,都在 3.1.402
  2. 確認我的 Nuget Package Mangaer 版本相當新/最新:5.7.0
  3. 嘗試使用包管理器控制台獲得完全相同的結果。
  4. 清理和重建/打包 A.csproj
  5. 嘗試使用 A.nupkg 在 Package Source 文件夾中包含 A.nuspec 文件
  6. 將 A.csproj 手動拉入項目以確認它可以添加為有效的項目參考,但這不是我想要解決這個問題的方式。

我可能已經嘗試了更多,但在這一點上,也許我應該問的問題是:是否可以在其他 netStandard 庫中引用 netStandard 庫?

我錯過了什么?

我相信,最后,這可能是 VS 中的 Pack/Build(在構建時生成包)功能的問題。

我可以在 Nuget Package Explorer 中手動創建 A 庫的包,該包將導入到 B 中就好了。

我關注了這個資源,但是從來沒有能夠使用 Visual Studio 構建包,這使得現在很難修改 Nuget Package Manger 的版本,因為它是捆綁的。我在 5.7 版,可能 5.6 可以作為這在谷歌上被列為最新的穩定版本,但無論哪種方式 - 現在,我相信我只會手動制作我的包,而不是嘗試自動生成它們。

如果有人對如何解決此問題有更好的解決方案或想法,我會全力以赴。


編輯


事實證明,自動包構建功能確實有效。

最后發生了什么:我征用了一些舊的 .net Core 庫標題,將它們降級到 .net Standard 而不是保留 2 個並行副本。

已經有 A.1.0.0.nupkg 和 B.1.0.1.nupkg 的 .net 核心版本,但在不同的 nuget 包源中。

當我構建一個新的 .net 標准 A.1.0.0.nupkg 並將其放在本地源中時,即使指向該本地源,nuget 也嘗試安裝 .net 核心...我猜是緩存的副本生產 nuget 包源(我清除了 50 次左右的緩存,所以我不知道 nuget 是如何讓這些電線交叉的)。

通過制作 .net 標准版 A.1.0.1.nupkg 可以輕松復制,它可以很好地導入,因為沒有 .net 核心 A.1.0.1.nupkg。 然后,您可以重命名該包並在 Nuget 包資源管理器中將其還原,但不能更改內容,否則會失敗。 當我不得不將 B.nupkg 的 .net Standard 版本的版本控制從 1.0.0 升級到 1.0.2 從而比 B.nupkg 的 .net Core 版本更進一步時,這一點得到了證實。

所以最后,自動打包功能沒有被破壞(謝天謝地)。 Nuget Package Explorer 手動創建解決了我的問題,因為我在手動創建時勾選了版本。

我從沒想過生產庫包源會干擾本地包文件夾......

暫無
暫無

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

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