C# 我的NuGet包在将其用作依赖项的项目中似乎没有更新

C# 我的NuGet包在将其用作依赖项的项目中似乎没有更新,c#,.net,nuget,nuget-package,C#,.net,Nuget,Nuget Package,请原谅我的疏忽,但我不能像预期的那样工作 我正在构建一个.NETFramework 4.6类库,其他应用程序需要从私有nuget存储库下载该类库。以下是我的流程: 我有一个测试项目,ConsoleApp5。它有一个简单的主要功能。 我下载我的NuGet软件包,右键单击项目并单击管理NuGet软件包,选择适当的repo和软件包,单击安装。 我运行我的测试。在本例中,我只是尝试实例化一个类,这并不困难。我得到一个关于类可访问性的错误。 在MyPackage中,我用public替换单词protecte

请原谅我的疏忽,但我不能像预期的那样工作

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

我有一个测试项目,ConsoleApp5。它有一个简单的主要功能。 我下载我的NuGet软件包,右键单击项目并单击管理NuGet软件包,选择适当的repo和软件包,单击安装。 我运行我的测试。在本例中,我只是尝试实例化一个类,这并不困难。我得到一个关于类可访问性的错误。 在MyPackage中,我用public替换单词protected的所有实例。我还通过右键单击项目,选择AddItem,瞄准一个类并给它命名TestClass来添加一个新类。 我进入Project>MyPackage属性…>应用程序选项卡>程序集信息,我手动将版本修补程序编号更新1。现在是1.0.5。 我转到开发人员命令行中的项目目录并运行以下命令:C:\Users\jptak\Downloads\nuget.exe pack-Version 1.0.5 然后,我运行以下命令来推送更新成功消息:您的包已推送。:C:\Users\jptak\Downloads\nuget.exe push MyPackage.1.0.5.nupkg mysecretcodegoesher-srchttp://my.nuget.server.goes.here.com 我返回到ConsoleApp5,管理NuGet软件包,查看相应软件包中的更新,然后单击更新箭头。下载完成,新版本号已存在。 我去使用新的类或者检查旧的错误是否被修复,并且我的所有测试都失败了。TestClass不存在。 这让我相信我正在编写的代码并没有进入NuGet服务器。有人知道我在更新服务器上最新版本代码的过程中缺少了什么吗

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

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

内置>配置管理器…>“调试”已切换到“发布” 我尝试过建造、重建和清理我的项目。我还没有看到这些过程对正在推送的代码有任何影响。 以下是我的控制台EAPP5中的代码:

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服务器是:

编辑1
在检查.nupkg文件后,我可以确认旧代码仍然存在,并且新代码没有进入.nupkg。这似乎支持这样一种观点,即问题在于打包过程,而不是nuget服务器。如何在每次nuget pack/nuget push之前刷新dll文件?

注释有点长,不完全是答案,但现在我们开始:

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

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

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

可以在dll上使用类似or的反编译器,以准确查看dll内部的情况


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

感谢您提供的调试提示!我真的很感激。我的dll中似乎有错误的AssemblyVersion:[assembly:AssemblyVersion1.0.0.0]这可能是导致问题的原因吗?每次要推送新代码时,如何刷新dll文件?@Knight这取决于一点-您是否有自己的MyPackage.nuspec文件,或者您只是在打包MyPackage.csproj?在5和6之间似乎缺少一个步骤。你需要编译这个库。nuget pack基本上是一个压缩输出文件的命令。如果你不编译,它只会使用上次压缩的旧文件。我想你已经了解到了这一点。按照ste fu的建议,我已经能够找到该项目的dll。似乎我不完全理解调试和发布之间的区别,以及项目如何为其中一个而不是另一个构建。看来,@BradleyUffner你是对的。调试的dll未更新,但正在推送。正在更新发布的dll,但未推送。我仍在试图理解这个系统存在的原因,但感谢您帮助我解决这个问题。我将在完全测试解决方案后更新这个问题。