c# - 是否有相当于 npm 链接的 .NET(核心)版本?

标签 c# .net nuget package-management

这本质上相当于“如何克隆 .NET 项目、进行修改并使用它而不是已发布的项目?”

在 NodeJS 中,我们有 npm link,它可以让您将 node_modules/目录中的本地包(模块)链接到当前项目。例如,您可以不用在 package.json 中使用 Express,而是可以

  1. 克隆 express
  2. 进行修改以表达
  3. 编译(必要时进行转译)和/或构建
  4. 在 Express 存储库中运行 npm link 以创建全局可用的本地包
  5. 在当前项目中运行 npm link express 以使用本地 Express,而不是通过 npm install 获得的 Express。

对于 .NET,迄今为止我见过的最接近的解决方案包括创建 local feed ,但在我的实验中这似乎不起作用。有关堆栈溢出的其他问题,如 how to use local packages in .net似乎提供了使用 RestoreSources 的解决方案,而整个网络上几乎没有记录该解决方案。当尝试更改 RestoreSources 以使用 LocalPackages 目录时,我不清楚是否使用本地包(obj/目录中的源似乎仍然来自 nuget 包而不是本地)。

最佳答案

对于将来想知道这个问题的任何人,正确的答案是使用 local feed 。我的问题是我缓存了 nuget 包,这些包在 dotnet Restore 期间得到了解决。

恢复之前的以下命令解决了我的问题:

dotnet nuget locals all --clear
dotnet restore

本质上,您的解决方案中需要有一个 nuget 配置 (NuGet.config),用于设置本地包目录:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
    <clear />
    <add key="LocalDev" value="./my-project/artifacts" />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
</configuration>

其中 artifacts/目录包含您要在还原期间使用的所有 .nupkg 包。显然,在主要解决方案中进行 dotnet Restore 之前,您必须确保构建/编译这些包也很重要:

dotnet pack /p:Version=5.22.12 --configuration Release --force --output "%~dp0artifacts";

关于c# - 是否有相当于 npm 链接的 .NET(核心)版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56384385/

相关文章:

C# - 朝鲜语编码

c# - 如何生成唯一的Hashcode?

c# - 如果 First() 不存在,如何在不引发异常的情况下获取它? [当 FirstOrDefault 不起作用时]

Xamarin.iOS 和 NuGet : Circular dependency detected

c# - C# 对象引用如何在内存中/在运行时(在 CLR 中)表示?

c# - 如何让 Visual C# studio 识别按键输入

c# - 如何使用 IMAP 在 C# 中从 gmail 下载附件?

C# 是否可以更改 ListView 中的 e.Label 值

c# - IWizard 带有多项目模板来获取 nuget 预发布包

visual-studio-2013 - 如何禁用 nuget 机器范围的缓存?