我的 NuGet 包似乎没有在使用它作为依赖项的项目中更新
My NuGet package doesn't seem to update in projects that use it as a dependency
请原谅我的一个非常简单的疏忽,但我根本无法让它按预期工作。
我正在构建一个 .NET Framework 4.6 Class 库,其他应用程序需要从私有 nuget 存储库下载该库。这是我的过程:
- 我有一个测试项目,ConsoleApp5。它有一个简单的主要功能。
- 我下载我的 NuGet 包 MyPackage(右键单击项目并单击管理 NuGet 包,select 适当的存储库和包,单击安装。)
- 我运行我的考试。在这种情况下,我只是想实例化一个 class,这并不困难。我收到关于 class 辅助功能的错误。
- 回到 MyPackage,我将单词
protected
的所有实例替换为 public
。我还添加了一个新的 class,方法是右键单击该项目,selecting Add Item,定位 class 并将其命名为 TestClass
.
- 我转到“项目”>“我的包属性...”>“应用程序”(选项卡)>“程序集信息”,然后手动将版本补丁号更新一个。所以现在是 1.0.5.
- 我在开发人员命令行中转到项目目录并运行以下命令:
C:\Users\jptak\Downloads\nuget.exe pack -Version 1.0.5
- 然后我运行下面的命令来推送更新(成功消息:
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
- 我返回到 ConsoleApp5,管理 NuGet 包,查看相应包中的更新,然后单击更新箭头。下载完成,新版本号出现了
- 我去使用新的 classes 或检查旧错误是否已修复并且我的所有测试都失败了。
TestClass
不存在。
这让我相信我正在编写的代码没有进入 NuGet 服务器。 有谁知道我在这个过程中遗漏了什么才能在服务器上更新最新版本的代码?
这个过程对我来说很陌生,因为我不是 .NET 开发人员(我主要与 PHP 一起工作)。
以下是关于我的 IDE 设置的更多信息:
- 在 Build > Configuration Manager...> Debug 已切换到 Release
- 我已经尝试构建、重建和清理我的项目。我还没有看到这些过程中的任何一个对被推送的代码有任何影响。
这是我的 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 文件?
请原谅我的一个非常简单的疏忽,但我根本无法让它按预期工作。
我正在构建一个 .NET Framework 4.6 Class 库,其他应用程序需要从私有 nuget 存储库下载该库。这是我的过程:
- 我有一个测试项目,ConsoleApp5。它有一个简单的主要功能。
- 我下载我的 NuGet 包 MyPackage(右键单击项目并单击管理 NuGet 包,select 适当的存储库和包,单击安装。)
- 我运行我的考试。在这种情况下,我只是想实例化一个 class,这并不困难。我收到关于 class 辅助功能的错误。
- 回到 MyPackage,我将单词
protected
的所有实例替换为public
。我还添加了一个新的 class,方法是右键单击该项目,selecting Add Item,定位 class 并将其命名为TestClass
. - 我转到“项目”>“我的包属性...”>“应用程序”(选项卡)>“程序集信息”,然后手动将版本补丁号更新一个。所以现在是 1.0.5.
- 我在开发人员命令行中转到项目目录并运行以下命令:
C:\Users\jptak\Downloads\nuget.exe pack -Version 1.0.5
- 然后我运行下面的命令来推送更新(成功消息:
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
- 我返回到 ConsoleApp5,管理 NuGet 包,查看相应包中的更新,然后单击更新箭头。下载完成,新版本号出现了
- 我去使用新的 classes 或检查旧错误是否已修复并且我的所有测试都失败了。
TestClass
不存在。
这让我相信我正在编写的代码没有进入 NuGet 服务器。 有谁知道我在这个过程中遗漏了什么才能在服务器上更新最新版本的代码?
这个过程对我来说很陌生,因为我不是 .NET 开发人员(我主要与 PHP 一起工作)。
以下是关于我的 IDE 设置的更多信息:
- 在 Build > Configuration Manager...> Debug 已切换到 Release
- 我已经尝试构建、重建和清理我的项目。我还没有看到这些过程中的任何一个对被推送的代码有任何影响。
这是我的 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 文件?