这本质上相当于“如何克隆 .NET 项目、进行修改并使用它而不是已发布的项目?”
在 NodeJS 中,我们有 npm link
,它可以让您将 node_modules/目录中的本地包(模块)链接到当前项目。例如,您可以不用在 package.json 中使用 Express,而是可以
- 克隆 express
- 进行修改以表达
- 编译(必要时进行转译)和/或构建
- 在 Express 存储库中运行
npm link
以创建全局可用的本地包 - 在当前项目中运行
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/