【问题标题】:The command "C:\Main\Src\.nuget\nuget.exe restore -SolutionDirectory ..\" exited with code 1命令“C:\Main\Src\.nuget\nuget.exe restore -SolutionDirectory ..\”以代码 1 退出
【发布时间】:2018-01-22 15:55:44
【问题描述】:

一个多星期以来,我一直在努力让 NuGet 正常工作。我终于让它在本地构建上工作,但不是在 TFS 2013 构建上工作。我把它缩小到在团队构建期间没有发生 NuGet,但是当我添加了

$(SolutionDir).nuget\nuget.exe restore -SolutionDirectory ..\

在构建顺序中我的第一个项目的预构建事件中,我收到此错误。如果我从解决方案目录中的命令行执行该命令,它工作正常。 它在本地构建良好,但在构建服务器上我收到此“代码 1”错误。非常有帮助 Grrrrrr!因此,我打开了 TFS 在构建之前获得的源代码,并尝试在构建服务器上进行本地构建,但我得到了同样的错误(即使它在我的本地机器上运行良好)。我尝试增加团队构建的详细程度,但这只是显示相同的错误。抱歉 - 我搜索了这个错误并找到了很多回复,但没有任何帮助...

顺便说一句,当我在解决方案中运行 nuget.exe 版本时,它的版本是 3.4.3.855。

【问题讨论】:

  • 这里也一样。如果我在我的 PC 上的解决方案上运行 msbuild(从命令提示符),我也会收到此错误。但是,如果我运行 nuget restore -- 从同一个命令提示符 -- 它可以工作。

标签: visual-studio-2013 nuget tfsbuild


【解决方案1】:

要使用 TFS XAML 构建恢复 NuGet 包,请尝试按照以下步骤操作:

  1. 在 VS IDE 中,转到 工具 -> 选项 -> NuGet 包管理器 -> 启用允许 NuGet 下载丢失的包。
  2. 删除 .nuget 文件夹中的 NuGet.exe 和 NuGet.targets 文件。确保这两个文件也从版本控制中删除。
  3. 从 .proj 文件中删除以下标签:
    1. <RestorePackages>true</RestorePackages>

    2.<Import Project="$(SolutionDir)\.nuget\nuget.targets" />  

    3. <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'))" />
    </Target>

更多细节请参考这个分步教程:Auto restore Nuget packages with TFS Build the right way

【讨论】:

  • OK @Patrick-MSFT - 我正在试一试。就一个问题。所以我按照你说的做了,然后转到工具 -> 选项 -> NuGet 包管理器 -> 然后禁用允许 NuGet 下载丢失的包,然后保存所有内容,并且没有等待更改。如果在您进行此选择时对项目没有任何更改,那么更改此设置会如何影响项目构建?
  • @Ben_G 抱歉,没明白你的意思。有时在使用 NuGet 包时,可能需要其他包作为参考。使用允许 NuGet 下载丢失的包。在安装主包的过程中,如果无法安装依赖包,Visual Studio 会允许你自动下载缺失的包。
  • 我的问题是,如果没有签入,我的桌面 VS 中的设置如何更改构建?
  • OK @Patrick-MSFT - 我尝试了你的建议,但它仍然不起作用。现在它根本没有做 NuGet。我认为这可能与使用错误模板的构建有关,因此我将模板更改为 TFVCTemplate.12.xaml (因此丢失了我的所有 msbuild 参数,这是一个全新的 headeach ;-),但这并没有帮助任何一个。还有其他想法吗?
  • 嗨@Patrick-MSFT。所以我发现了一些额外的 .csproj 文件,其中 restorepackages 设置为 true,所以我删除了这些引用,现在我得到:这个项目引用了这台计算机上缺少的 NuGet 包。启用 NuGet 包还原以下载它们。有关详细信息,请参阅go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 C:\Builds\TFS\WebApps\src\WebApps\Main\Src\\.nuget\NuGet.targets。还有其他想法吗?我还更改了构建过程模板 TfvcTemplate.12.xaml,但这并没有帮助。
猜你喜欢
  • 2017-03-04
  • 1970-01-01
  • 2017-11-30
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多