我的 NuGet 包似乎没有在使用它作为依赖项的项目中更新

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

请原谅我的一个非常简单的疏忽,但我根本无法让它按预期工作。

我正在构建一个 .NET Framework 4.6 Class 库,其他应用程序需要从私有 nuget 存储库下载该库。这是我的过程:

  1. 我有一个测试项目,ConsoleApp5。它有一个简单的主要功能。
  2. 我下载我的 NuGet 包 MyPackage(右键单击项目并单击管理 NuGet 包,select 适当的存储库和包,单击安装。)
  3. 我运行我的考试。在这种情况下,我只是想实例化一个 class,这并不困难。我收到关于 class 辅助功能的错误。
  4. 回到 MyPackage,我将单词 protected 的所有实例替换为 public。我还添加了一个新的 class,方法是右键单击该项目,selecting Add Item,定位 class 并将其命名为 TestClass.
  5. 我转到“项目”>“我的包属性...”>“应用程序”(选项卡)>“程序集信息”,然后手动将版本补丁号更新一个。所以现在是 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. 我去使用新的 classes 或检查旧错误是否已修复并且我的所有测试都失败了。 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();
        }
    }

错误:命名空间中不存在测试Class。您是否忘记了程序集参考?

这是 MyPackage 中的测试Class代码:

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 文件只是一个 zip 文件,可以用 7Zip 或任何其他存档工具打开。

  • 进入后,您可以检查用于打包程序包的 .nuspec 文件,以及 lib 文件夹中提供的 dll。

  • 可以在 dll 上使用像 DotPeek or ILSpy 这样的反编译器来准确查看 dll 内部发生的事情。

导致您的症状的可能原因可能包括 NuGet 服务器提供错误的成功,或者您的应用程序无法更新包并且仍然引用旧包。