csproj 引用本地 nuget 包文件夹

csproj reference local nuget package folder

我不得不将我的项目转移到 Microsoft 以调查 LiveUnitTesting 错误,我得到的代理说有太多错误需要查看,他不想打扰。

好吧,很明显我的 csproj 有 ..\..\..\packages,它确实是 nuget 指向的 C 的根。

我的 csproj 中是否没有变量可以告诉 VS "just use whatever location the local nuget uses"

像 {NugetPath}\Castle.Core.4.2.1\lib\net45\Castle.Core.dll 之类的?

TL;DR 考虑 migrating from packages.config to PackageReference.

长版:

"Normally" 包在构建时自动恢复,我知道要禁用它的唯一方法是 nuget.config 设置或 Visual Studio 设置。对我来说,为什么一个负责调查使用其他人代码的问题的代理会禁用自动包恢复对我来说没有意义,所以我只能假设你的回购已经禁用它,或者你的项目有一些不标准的东西导致它在代理的机器上失败。模板新建项目没有这个问题。

总之,这不是你问的问题。您的问题的答案是否定的,没有指向 NuGet 还原文件夹的内置 MSBuild 属性。

但是,使用 PackageReference 作为 NuGet 依赖项而不是 packages.config 的项目不会修改 csproj 以添加程序集文件的路径。它是在构建时自动计算的,因此当人们在不同位置克隆你的 repo 到你克隆你的位置时,构建失败的风险较小,或者如果你在你的 repo 周围移动代码,它不需要修改 csproj,只需要 运行 nuget 恢复。

我假设您在存储库外部使用包文件夹的原因是与多个存储库共享该文件夹,从而节省磁盘 space。 PackageReference 会自动执行此操作。它不再为每个 repo/solution 创建一个包文件夹,并且直接从全局包文件夹构建使用程序集。