【问题标题】:csproj reference local nuget package foldercsproj 引用本地 nuget 包文件夹
【发布时间】:2018-11-16 18:42:24
【问题描述】:

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

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

我的 csproj 中是否没有变量可以告诉 VS“只使用本地 nuget 使用的任何位置”

像 {NugetPath}\Castle.Core.4.2.1\lib\net45\Castle.Core.dll 什么的?

【问题讨论】:

    标签: nuget csproj


    【解决方案1】:

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

    长版:

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

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

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

    我认为您在 repo 之外使用 packages 文件夹的原因是与多个 repos 共享该文件夹,从而节省磁盘空间。 PackageReference 会自动执行此操作。它不再为每个 repo/解决方案创建一个包文件夹,而是直接使用全局包文件夹中的程序集进行构建。

    【讨论】:

    • 伙计,我以为我已经迁移了?
    • PackageReference 不再将 <Reference /> 元素放入 csproj 中进行组装,因此如果您尝试手动迁移(例如删除 packages.config 文件并添加 PackageReference>,这是一个不完整的迁移。不仅是否需要删除正确的 Reference 元素,可能有需要删除的道具和目标 Imports 以及其他我不知道的事情。
    猜你喜欢
    • 2020-01-12
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多