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

时间:2019-01-22 16:55:23

标签: c# .net nuget nuget-package

原谅我必须做的非常简单的监督,但我根本无法按预期进行。

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

  1. 我有一个测试项目ConsoleApp5。它具有一个简单的主要功能。
  2. 我下载了我的NuGet软件包MyPackage(右键单击项目,然后单击“管理NuGet软件包”,选择适当的存储库和软件包,然后单击“安装”。)
  3. 我进行测试。在这种情况下,我只是试图实例化一个类,这并不困难。我收到有关类可访问性的错误。
  4. 回到MyPackage中,我将protected的所有实例替换为public。我还通过右键单击项目,选择“添加项目”,定位一个类并为其命名为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设置的更多信息:

  • 在Build> Configuration Manager中...> Debug 已切换为发布
  • 我尝试过构建,重建和清理项目。我还没有看到这些过程中的任何一个都对推送的代码没有任何影响。

这是我的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文件?

1 个答案:

答案 0 :(得分:2)

想发表评论的时间有点长,不完全是一个答案,但是我们开始:

因此,NuGet软件包的主要调试技巧是:

  • 手动下载软件包。 .nupkg文件只是可以使用7Zip或任何其他存档工具打开的zip文件。

  • 在内部,您可以检查用于打包软件包的.nuspec文件,在lib文件夹中,都是已提供的dll。

    < / li>
  • 可以在dll上使用DotPeekILSpy之类的反编译器,以查看dll内部到底发生了什么。

您的症状的可能原因可能包括NuGet服务器显示错误的成功,或者您的应用程序无法更新程序包而仍然引用旧的程序包。