我在 Visual Studio 2015 中有一个使用多个 NuGet 包的解决方案。当我在 Visual Studio 2015 中构建时,包被正确恢复并且构建成功。但是,当我将同一个项目推送到 Visual Studio Online 时,即使我选中了“还原 NuGet 包”,构建也会失败,因为 MSBuild 找不到引用的二进制文件。
我查看了构建日志,发现我的包都已恢复。为什么即使包已恢复,在构建过程中也找不到引用的二进制文件?
最佳答案
我发现问题不在 NuGet 包还原,而是提示路径在我的 .csproj 文件中的写入方式。要解决此问题,请使用 $(SolutionDir) 变量将提示路径更改为指向解决方案目录。
例如,NuGet 恢复提取了 Microsoft.WindowsAzure.Storage.dll 二进制文件,但在项目的构建中找不到它。要解决此问题,我必须打开 .csproj,找到对 dll 的引用,然后将路径从
更改为..\packages\WindowsAzure.Storage.6.1.0\lib\net40\Microsoft.WindowsAzure.Storage.dll
-- 到--
$(SolutionDir)\packages\WindowsAzure.Storage.6.1.0\lib\net40\Microsoft.WindowsAzure.Storage.dll
通过使用 $(SolutionDir) 变量,Visual Studio Team Services 能够找到我引用的 dll 并正确构建我的项目。
关于c# - 如何让Visual Studio Online上的Builder还原所有NuGet包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34256383/