Azure DevOps,为“恢复NuGet软件包”;Visual Studio Build";使用website.sln文件时

Azure DevOps,为“恢复NuGet软件包”;Visual Studio Build";使用website.sln文件时,nuget,azure-devops,nuget-package-restore,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. 它是VisualStudio2017网站的.sln文件,不包含关于NuGet的信息,也没有其他答案所建议的.cspr

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

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

Nothing to do. None of the projects in this solution specify any packages for NuGet to restore.
它是VisualStudio2017网站的.sln文件,不包含关于NuGet的信息,也没有其他答案所建议的.csproj

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

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
和其他位置,但没有任何效果

是否有一个步骤,我错过了移动文件后,他们已经恢复?或者在构建时需要传递一个参数来告诉它包文件在哪里

Azure DevOps,在使用网站时还原“Visual Studio Build”的NuGet软件包。sln

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

不推荐使用Restore NuGet Packages选项:

此选项已弃用。要还原NuGet包,请添加NuGet 生成之前的安装程序步骤

因此,要解决此问题,请尝试使用NuGet安装程序任务,转到Package选项卡,并添加NuGet还原任务

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


在为不同的管道查看了这一点后,我找到了答案。简而言之,它与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 restore将packages文件夹放在何处,发现它将其添加到与网站根目录相同的级别。在我的例子中,通过将目标目录更改为

packages
而不是

/packages


将其向上移动一级到网站根目录内,以搜索生成内容。

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


我找到的解决方案是从packages.config new迁移该项目。这样做后,nuget restore mysolution.sln运行良好。

你好,Leo,谢谢你的回答,很遗憾,我认为你没有完整阅读该问题,因为你的回答描述了我当前的设置。我不能使用.sln,因为它对包一无所知(应该吗?),所以我使用的是packages.config文件。问题发生在这一点之后,因为生成解决方案找不到包文件。我如何告诉它在/packages文件夹中查找并将移动到Bin文件夹中进行网站构建?谢谢,默认的目标目录是我所缺少的
../packages