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

时间:2018-11-20 19:46:16

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

我似乎无法为我的devops构建管道找到正确的设置,以使其能够还原NuGet软件包,以便构建过程可以找到它们。

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

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

这是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和其他位置,但是没有任何区别。

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

任何帮助或想法都将非常感谢。

3 个答案:

答案 0 :(得分:2)

  

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

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

enter image description here

不建议使用“还原NuGet软件包”选项:

enter image description here

  

此选项已弃用。要还原NuGet软件包,请添加一个NuGet   安装程序先于构建

因此,要解决此问题,请尝试使用NuGet Installer任务,转到“程序包”选项卡,添加nuget恢复任务。

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

enter image description here

希望这会有所帮助。

答案 1 :(得分:0)

查看了不同管道的内容后,我得出了答案。简而言之,它与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

../packages

将其向上移动到网站根目录中搜索构建的位置。

答案 2 :(得分:0)

我遇到了与您的第一个问题相同的问题(通过.sln文件进行的nuget还原未还原解决方案中项目的package.config中指定的nuget软件包)。我不想修改nuget restore命令以直接指向packages.config(您采用的解决方案)。

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