我在Visual Studio 2015中有一个使用几个NuGet包的解决方案.当我在Visual Studio 2015中构建时,正确地还原了包并且构建成功.但是,当我将同一个项目推送到Visual Studio Online时,即使我选中了"Restore NuGet Packages",构建也会失败,因为MSBuild无法找到引用的二进制文件.
我查看了构建日志,看到我的软件包都已恢复.为什么,即使包恢复,是在构建期间找不到引用的二进制文件?
我发现问题不在NuGet包恢复中,而是在我的.csproj文件中写入提示路径的方式.要解决此问题,请使用$(SolutionDir)变量将提示路径更改为指向解决方案目录.
例如,NuGet还原提取了Microsoft.WindowsAzure.Storage.dll二进制文件,但在项目的构建中找不到它.要解决此问题,我必须打开.csproj,找到对dll的引用,并更改路径
.. \包\ WindowsAzure.Storage.6.1.0\LIB \net40\Microsoft.WindowsAzure.Storage.dll
- 至 -
$(SolutionDir)\包\ WindowsAzure.Storage.6.1.0\LIB \net40\Microsoft.WindowsAzure.Storage.dll
通过使用$(SolutionDir)变量,Visual Studio Team Services能够找到我引用的dll并正确构建我的项目.