我似乎无法为我的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和其他位置,但是没有任何区别。
还原文件后,我是否缺少移动文件的步骤?还是在构建时需要传递一个参数来告诉它软件包文件在哪里?
任何帮助或想法都将非常感谢。
答案 0 :(得分:2)
Azure DevOps,在使用website.sln时是否为“ Visual Studio Build”还原NuGet软件包?
您应在构建管道中使用NuGet安装程序任务。
不建议使用“还原NuGet软件包”选项:
此选项已弃用。要还原NuGet软件包,请添加一个NuGet 安装程序先于构建
因此,要解决此问题,请尝试使用NuGet Installer任务,转到“程序包”选项卡,添加nuget恢复任务。
您可以指定 packages.config 或 .sln 文件来还原软件包,当您指定 packages.config 时,您也可以需要提供Destination目录,默认值为 / packages :
希望这会有所帮助。
答案 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正常。