簡體   English   中英

我的NuGet軟件包在使用它作為依賴項的項目中似乎沒有更新

[英]My NuGet package doesn't seem to update in projects that use it as a dependency

原諒我必須做的非常簡單的疏忽,但是我根本無法按預期進行。

我正在構建.NET Framework 4.6類庫,其他應用程序需要從私有nuget存儲庫中下載該類庫。 這是我的過程:

  1. 我有一個測試項目ConsoleApp5。 它具有一個簡單的主要功能。
  2. 我下載了我的NuGet軟件包MyPackage(右鍵單擊項目,然后單擊管理NuGet軟件包,選擇適當的存儲庫和軟件包,然后單擊安裝。)
  3. 我進行測試。 在這種情況下,我只是試圖實例化一個類,這並不困難。 我收到有關類可訪問性的錯誤。
  4. 回到MyPackage中,我用public替換了protected的單詞的所有實例。 我還通過右鍵單擊項目,選擇“添加項目”,定位一個類並為其命名為TestClass來添加一個新類。
  5. 我轉到項目> MyPackage屬性...>應用程序(選項卡)>程序集信息,然后手動將版本補丁號更新一個。 所以現在是1.0.5。
  6. 我轉到開發人員命令行中的項目目錄,然后運行以下命令: C:\\Users\\jptak\\Downloads\\nuget.exe pack -Version 1.0.5
  7. 然后,我運行以下命令來推送更新(成功消息: Your package was pushed. ): C:\\Users\\jptak\\Downloads\\nuget.exe push MyPackage.1.0.5.nupkg MySecretCodeGoesHere -src http://my.nuget.server.goes.here.com
  8. 我回到ConsoleApp5,管理NuGet程序包,在適當的程序包中查看更新,然后單擊更新箭頭。 下載完成,並且有新版本號。
  9. 我去使用新類或檢查舊錯誤是否已修復並且所有測試均失敗。 TestClass不存在。

這使我相信我正在編寫的代碼並未將其寫入NuGet服務器。 有誰知道我在此過程中缺少什么以使最新版本的代碼在服務器上得到更新?

由於我不是.NET開發人員(我主要使用PHP),因此此過程對我來說是陌生的。

以下是有關我的IDE設置的更多信息:

  • 在構建>配置管理器...中> 調試已切換到發布
  • 我嘗試過構建,重建和清理項目。 我還沒有看到任何這些過程對所推送的代碼都沒有任何影響。

這是我的ConsoleApp5中的代碼:

namespace ConsoleApp5
{
    class Program
    {
        static void Main(string[] args)
        {
            string testclient = "testclient";
            string testpass = "testpass";
            string scope = "validate-contract";
            string accessToken = "";
            string retrievedScope = "";

            MyPackage.TestClass test = new MyPackage.TestClass();
        }
    }

錯誤:名稱空間中不存在TestClass。 您忘記了裝配參考嗎?

這是MyPackage中的TestClass代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyPackage
{
    public class TestClass
    {
        public TestClass()
        {

        }
    }
}

我正在使用的NuGet服務器是: https : //github.com/Daniel15/simple-nuget-server

編輯1檢查.nupkg文件后,我可以確認舊代碼仍然存在,並且新代碼尚未將其放入.nupkg。 這似乎支持以下問題:打包過程而不是nuget服務器上的問題。 如何在每次nuget pack / nuget push之前刷新dll文件?

有點長的評論,不完全是一個答案,但是我們開始:

因此,NuGet軟件包的主要調試技巧是:

  • 手動下載軟件包。 .nupkg文件只是可以使用7Zip或任何其他存檔工具打開的zip文件。

  • 一旦進入內部,您就可以檢查用於打包程序包的.nuspec文件,以及位於lib文件夾中的已提供的dll。

  • 可以在dll上使用DotPeekILSpy這樣的反編譯器,以查看dll內到底發生了什么。

出現症狀的可能原因包括NuGet服務器顯示錯誤的成功,或者您的應用程序無法更新程序包而仍然引用舊的程序包。

暫無
暫無

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

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