是否存在等效于npm链接的.NET(核心)?

时间:2019-05-30 19:18:25

标签: c# .net nuget package-management

从本质上讲,这就是“如何克隆.NET项目,进行修改并使用它而不是已发布的项目?”

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

  1. 克隆快递
  2. 进行修改以表达
  3. 编译(如果需要,可以进行编译)和/或构建
  4. 在Express存储库中运行npm link,以创建全局可用的本地程序包
  5. 在您当前的项目中运行npm link express以使用本地快递,而不是npm install的快递。

使用.NET,到目前为止,我所看到的最接近的解决方案包括创建一个local feed,但是在我的实验中,这似乎不起作用。诸如how to use local packages in .net之类的其他有关堆栈溢出的问题似乎都提供了使用RestoreSources的解决方案,该问题实际上在整个Web上均未记录。尝试将RestoreSources更改为使用LocalPackages目录时,我不清楚是否正在使用本地软件包(obj /目录中的源似乎仍来自nuget软件包而不是本地)。

1 个答案:

答案 0 :(得分:0)

对于将来想知道这一点的任何人,正确的答案是使用local feed。我的问题是我缓存了在dotnet restore期间要解决的nuget程序包。

还原前的以下命令解决了我的问题:

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";