从命令行使用msbuild时缺少nuget程序包错误

从命令行使用msbuild时缺少nuget程序包错误,msbuild,nuget,Msbuild,Nuget,我正在开发silverlight应用程序。我们正在使用nuget软件包,但我们不签入这些软件包,这些软件包应该在构建时恢复。该解决方案在VisualStudio中编译良好。 我正在尝试使用msbuild在命令行中添加编译任务 Exec{C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe$slnFile/p:OutputPath=$OutputPath/p:Configuration=Release/p:SolutionDir=$ro

我正在开发silverlight应用程序。我们正在使用nuget软件包,但我们不签入这些软件包,这些软件包应该在构建时恢复。该解决方案在VisualStudio中编译良好。 我正在尝试使用msbuild在命令行中添加编译任务

Exec{C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe$slnFile/p:OutputPath=$OutputPath/p:Configuration=Release/p:SolutionDir=$rootDir\Source\/verbosity:minimal/nologo/m:4}生成失败

在执行此步骤之前,我将显式地执行nuget恢复

Exec{C:\project\nuget.exe restore$solutionFile}“restore failed”

此步骤通过时会显示一条消息“packages.config中列出的所有软件包”已安装

但是,当实际的构建步骤发生时,构建失败并显示消息

此项目引用了此计算机上缺少的NuGet程序包。请启用NuGet程序包还原以下载这些程序包。有关详细信息,请参阅。缺少的文件是\Source\.NuGet\NuGet.targets

我正在显式执行nuget还原,并且已启用

visual studio中的“允许nuget下载缺少的包”和 解决方案级别中的“启用nuget包还原”

我的nuget.config具有“disableSourceControlIntegration”value=“true”


我在stackoverflow中看到过类似的问题,并且我尝试了上述所有建议的解决方案。我不知道为什么它会失败,尽管如此。

您不需要同时执行nuget.exe还原和让MSBuild使用nuget.targets来还原nuget包。您应该选择其中之一

我怀疑您案例中的问题是未定义$rootDir,并且传递给MSBuild的SolutionDir属性是:

\Source

在我的项目文件中,我有:

 <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />


因此,如果SolutionDir\Source,则解决方案将无法编译,并显示相同的错误消息。

在我的csproj文件中,不知何故有以下内容:

  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
  <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />

此项目引用了此计算机上缺少的NuGet程序包。请启用NuGet程序包还原以下载它们。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105. 缺少的文件是{0}。


删除它解决了问题。

对于S&Gs,请将您的nuget.targets文件复制到\Source@Will感谢您的输入。我将.nuget文件夹复制到根目录下,它提供了帮助。您可以添加完整的nuget.config文件吗?应该与我同样面临的问题相当,通过命令行nuget c还原包当我使用MSbuild从命令行编译项目时,ommand(nuget restore“D:\..)未被引用。它是如何得到解析的?