代码之家  ›  专栏  ›  技术社区  ›  Knight

我的nuget包在用作依赖项的项目中似乎没有更新

  •  1
  • Knight  · 技术社区  · 7 年前

    原谅对我来说必须是一个非常简单的疏忽,但我只是不能让它按预期工作。

    我正在构建一个.NET Framework 4.6类库,其他应用程序需要从一个私有Nuget存储库中下载该类库。以下是我的流程:

    1. 我有一个测试项目,consoleapp5。它有一个简单的主要功能。
    2. 我下载了我的nuget包my package(右键单击项目并单击管理nuget包,选择适当的repo和package,单击安装)。
    3. 我进行测试。在本例中,我只是尝试实例化一个类,这并不困难。我在类可访问性方面出错。
    4. 回到mypackage中,我替换了该单词的所有实例 protected 具有 public . 我也添加了一个新的类,方法是右键单击项目,选择添加项,针对一个类并给它命名。 TestClass .
    5. 我转到项目>我的包属性…>应用程序(选项卡)>程序集信息,我手动逐个更新版本修补程序号。所以现在是1.0.5。
    6. 我转到developer命令行中的项目目录并运行以下命令: 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. 我去使用新的类,或者检查旧的错误是否被修复,以及我的所有测试是否都失败。 测试类 不在那里。

    这让我相信我正在编写的代码并没有到达nuget服务器。 有人知道我在这个过程中缺少了什么,以便在服务器上更新最新版本的代码吗?

    这个过程对我来说是陌生的,因为我不是.NET开发人员(我主要使用PHP)。

    以下是有关我的IDE设置的更多信息:

    • 在内部版本配置管理器中…gt; 调试 已切换到 释放
    • 我试过建造、重建和清理我的项目。我没有看到这些过程中的任何一个对被推送的代码有任何影响。

    以下是来自我的控制台App5的代码:

    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服务器上。如何刷新每个DLL文件之前 nuget pack / nuget push ?

    1 回复  |  直到 7 年前
        1
  •  2
  •   ste-fu    7 年前

    有点长的评论,不完全是一个答案,但现在我们开始:

    所以nuget包的主要调试技巧是:

    • 手动下载包。一 .nupkg 文件只是一个压缩文件,可以用 7Zip 或任何其他存档工具。

    • 一旦进入,你可以检查 .nuspec 用于打包包的文件,以及 lib 文件夹是已提供的DLL。

    • 像一个反编译器 DotPeek ILSpy 可以在dll上使用,以准确查看dll内部的情况。

    症状的可能原因可能包括nuget服务器错误地成功,或者应用程序未能更新包,并且仍然引用旧包。

    推荐文章