我在两种情况下都遇到了这个问题。
首先,当我尝试使用msbuild.exe从命令行构建解决方案时。其次,当我尝试使用TFS和CI在构建服务器上构建sln和包含项目时。
我收到声称引用丢失的错误。在检查我的本地构建目录和TFS服务器的目录时,我发现未创建/ packages文件夹,并且nuget包未复制。按照亚历山大答案(http://nuget.codeplex.com/workitem/1879)中列出的说明,对我也不起作用。
我已通过VS2010启用了还原软件包,并且看到仅在VS2010内才能进行构建。同样,使用msbuild失败。我的解决方法可能完全无效,但是对于我的环境,这一切都可以从本地的命令行构建以及TFS中的CI构建中进行。
我进入。\ nuget并在.nuget \ NuGet.targets文件中更改了这一行:
从:
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" -o "$(PackagesDir)"</RestoreCommand>
到:(注意,变量周围没有引号)
<RestoreCommand>$(NuGetCommand) install $(PackagesConfig) -source $(PackageSources) -o $(PackagesDir)</RestoreCommand>
我知道如果我的目录中有空格,这将会失败,但是我的目录中没有空格,因此这种解决方法可以暂时使我的构建成功完成。
我会说在构建中打开诊断级别的日志记录将有助于显示msbuild正在执行哪些命令。这就是导致我临时入侵目标文件的原因。