【问题标题】:Azure DevOps, restore NuGet packages for "Visual Studio Build" when using a website.sln fileAzure DevOps,使用 website.sln 文件时为“Visual Studio Build”恢复 NuGet 包
【发布时间】:2018-11-20 19:46:16
【问题描述】:

我似乎无法为我的 DevOps 构建管道找到正确的设置,以使其能够恢复 NuGet 包,以便构建过程能够找到它们。

我遇到的第一个问题是默认设置将还原指向我的 .sln 文件,导致它打印出来:

Nothing to do. None of the projects in this solution specify any packages for NuGet to restore.

这是一个 Visual Studio 2017 网站 .sln 文件,不包含有关 NuGet 的信息,也没有其他答案建议的 .csproj。

我通过将其指向 packages.config 文件解决了这个问题。现在恢复过程确实找到了需要的包,但似乎没有将它们放在“Visual Studio Build”构建过程可以找到它们的地方。

Error CS0246: The type or namespace name 'Nest' could not be found (are you missing a using directive or an assembly reference?)

我查看了构建过程部分,但找不到任何有用的东西,因为唯一的参考标记为:

此选项已弃用。若要还原 NuGet 包,请添加 NuGet 工具 安装程序

这是我已经尝试做的。我曾尝试将 NuGet 还原的目标目录移动到 bin 和其他地方,但没有任何作用。

在恢复文件后,我是否缺少移动文件的步骤?或者我需要在构建时传递一个参数来告诉它包文件在哪里?

【问题讨论】:

    标签: nuget azure-devops nuget-package-restore


    【解决方案1】:

    Azure DevOps,在使用 website.sln 时为“Visual Studio Build”还原 NuGet 包?

    您应该在构建管道期间使用 NuGet 安装程序任务。

    Restore NuGet Packages 选项已弃用:

    此选项已弃用。若要还原 NuGet 包,请添加 NuGet 构建前的安装步骤

    所以要解决这个问题,请尝试使用 NuGet 安装程序 任务,转到“包”选项卡,然后添加 NuGet 恢复任务。

    您可以指定 packages.config.sln 文件来恢复包。指定packages.config时,还需要提供Destination目录,默认值为/packages

    【讨论】:

    • 嗨,Leo,感谢您的回答,不幸的是,我认为您没有完全阅读该问题,因为您的回答描述了我当前的设置。我不能使用 .sln 因为它对包一无所知(应该吗?)所以我正在使用 packages.config 文件。问题出现在此之后,因为构建解决方案没有找到包文件。我如何告诉它在 /packages 文件夹中查找并将其移动到网站构建的 Bin 文件夹中?
    • 谢谢,默认目标目录是我所缺少的
    【解决方案2】:

    在查看了这个不同的管道后,我找到了答案。简而言之,它与 packages.config 和 sln 文件位置以及用于恢复和搜索包的相对路径有关。

    长答案。

    在生成解决方案日志中给出丢失文件的错误后,它列出了它正在检查的所有位置。

    For SearchPath "{CandidateAssemblyFiles}".
    For SearchPath "{HintPathFromItem}".
    For SearchPath "{TargetFrameworkDirectory}".
    For SearchPath "bin\Release\".
    For SearchPath "{RawFileName}".
    

    HintPathFromItem 最有趣,因为它提到了包文件夹。

    For SearchPath "{HintPathFromItem}".
    Considered "packages\log4net.2.0.0\lib\net40-full\log4net.dll", but it didn't exist.
    

    考虑到这一点,我检查了 NuGet 还原将包文件夹放置在何处,发现它正在将其添加到与网站根目录相同的级别。在我的情况下,通过将目标目录更改为

    packages
    

    而不是

    /packages
    

    ../packages
    

    将其上移一级到网站根目录内的构建搜索位置。

    【讨论】:

      【解决方案3】:

      我遇到了与您的第一个问题相同的问题(传递 .sln 文件的 nuget restore 未恢复解决方案内项目的 packages.config 中指定的 nuget 包)。我不想修改 nuget restore 命令直接指向 packages.config (你采用的解决方案)。

      我找到的解决方案是从 packages.config new Package Reference format 迁移该项目。这样做,nuget restore mysolution.sln 工作正常。

      【讨论】:

        猜你喜欢
        • 2022-11-24
        • 1970-01-01
        • 2019-10-30
        • 1970-01-01
        • 1970-01-01
        • 2014-06-30
        • 1970-01-01
        • 1970-01-01
        • 2019-08-17
        相关资源
        最近更新 更多