【问题标题】:How can I resolve the error: "The command [...] exited with code 1"?如何解决错误:“命令 [...] 以代码 1 退出”?
【发布时间】:2014-04-04 18:35:58
【问题描述】:

我已经阅读了很多问题,但我无法找到适合我的答案。

当我尝试在 VS2012 中编译一个项目时,我得到了这个结果:

命令“....\tools\bin\nuget pack Packages\Lib.Html.nuspec - OutputDirectory ....\bin\Zip\Packages -NoPackageAnalysis”退出,代码为 1。

我在我的 .csproj 文件中查找了应该是错误所在的那行代码,并且有:

<Exec Command="$(ProjectDir)..\..\tools\bin\nuget pack $(ProjectDir)Packages\Lib.Html.nuspec -OutputDirectory $(OutputPath)Packages -NoPackageAnalysis" />  

我做错了什么?

[编辑] 启动该项目的调试并忽略“构建错误”,我有一个新警报:

“Visual Studio 无法启动调试,因为缺少调试目标“[project.exe 路径]”。 请构建项目并重试,或适当设置 OutputPath 和 AssemblyName 属性以指向目标程序集的正确位置。"

【问题讨论】:

  • 当您说“结果”时,您是指“错误列表”视图吗?尝试查看“输出”视图。可能还有其他信息。
  • 是的,我的意思是错误列表。不幸的是,该项目只是一个类库,但是如果我开始调试并且我忽略了“构建错误”,则会出现 VS 警报,我会编辑我的问题。希望它可以帮助:)
  • 再次尝试查看“输出”视图。 i 此窗口中是否有其他信息?输出视图可以在菜单 VIEW -> Output 中找到
  • 检查文件“$(ProjectDir)..\..\tools\bin\nuget pack $(ProjectDir)Packages\Lib.Html.nuspec”是否存在

标签: c# visual-studio-2012


【解决方案1】:

第一步是弄清楚错误到底是什么。为了做到这一点,将您的 MsBuild 输出扩展为诊断。这将显示实际执行的命令,并希望显示完整的错误消息

  • 工具 -> 选项
  • 项目和解决方案 -> 构建和运行
  • 将“MsBuild 项目构建输出详细程度”更改为“诊断”。

【讨论】:

  • 原来我的路径周围没有引号,所以当我在该路径中引入一个空格时,它以代码 1 退出。这种方法帮助我找到了答案。
  • 好建议!先生,您有我的支持:D 但是,“诊断”选项给了我太多数据。将其设置为“正常”为我提供了所需的信息,同时仍然可以管理:) 原来我有错误的 powershell“执行策略”。通过在 powershell 中运行“Set-ExecutionPolicy UnRestricted -Scope CurrentUser”修复。
  • 谢谢!。你的评论有帮助。构建事件中引用的项目之一处于锁定状态。对项目文件夹执行 svncleanup 解决了我的问题
  • 谢谢!对我来说是一个简单的语法错误(缺少空格)。知道这个技巧非常有用。详细信息有点像消防水带,所以我将我的设置为详细信息,这足以找出问题所在。
  • 我 git 直接克隆到我的 F:/ 驱动器中,没有更多问题。也许问题是因为我将 git 克隆到了一个名称中包含空格的项目文件夹中。教训:文件夹/文件名中不要有空格。
【解决方案2】:

对我来说,在 VS 2013 中,我必须摆脱 UI 项目 (MVC) 中引用下缺失的引用。事实证明,缺少的没有被引用。

【讨论】:

    【解决方案3】:

    右键项目->属性->构建事件

    删除构建后事件命令行文本块中的文本

    【讨论】:

    • 谢谢!项目在预构建事件中有一些命令失败,为我解决了哪些问题。
    • 我建议不要在不了解它们应该做什么以及为什么会失败的情况下删除 Pre/Post 构建命令。有时您可能会错过在运行它们的项目上完成的重要设置。
    【解决方案4】:

    尝试以管理员身份打开 Visual Studio。

    【讨论】:

    • 这是我在尝试将 PowerShell 脚本作为构建后事件运行时的答案
    • 这对我也有用。无需更改任何 VS 设置。
    【解决方案5】:

    我知道这肯定为时已晚,但是,这也可以帮助某人。

    在我的情况下,我发现源文件正在被另一个进程使用,该进程限制复制到目标。我发现通过使用命令提示符(只需将构建后命令复制粘贴到命令提示符并执行给我错误信息)。

    确保您可以从命令提示符复制,

    【讨论】:

      【解决方案6】:

      对我来说:我的路径文件夹名称中有一个空格 G:\Other Imp Projects\Mi.....

      解决方案 1:

      从文件夹中删除空格

      例如:Other Imp Projects ->> Other_Imp_Projects

      解决方案 2:

      为您的路径添加引号 ("")。

      例如:mkdir "$(ProjectDir)$(OutDir)Configurations" //见双引号

      【讨论】:

        【解决方案7】:

        这建立在 JaredPar... 的答案之上,适用于 VS2017。 Visual Studio 2017 中存在相同的“构建和运行”选项。

        我得到了,命令 "chmod +x """ exited with code 1

        在构建输出窗口中,我搜索了“错误”,并在同一常规区域中发现了一些错误。我能够单击构建输出中的链接,发现错误涉及 .targets 文件中的此条目:

          <Target Name="ChmodChromeDriver" BeforeTargets="BeforeBuild" Condition="'$(WebDriverPlatform)' != 'win32'">
            <Exec Command="chmod +x &quot;$(ChromeDriverSrcPath)&quot;" />
          </Target>
        

        在构建输出中,我还发现了一条更详细的错误消息,基本上表明它在它正在查找的包文件夹中找不到 Selenium.WebDriver.ChromeDriver v2.36。我检查了项目的 NuGet 包,并且2.36 版确实在已安装软件包的列表中。我确实找到了 2.36 的包文件,并将文件夹、子文件夹和文件的属性从“只读”更改为“读/写”。已建成,但同样失败。有时“更新”到不同版本的包,然后更新回原始版本可以修复此类错误。所以我将管理 NuGet 包中的引用“更新”到 2.37,构建,失败,然后“更新”回 2.36,构建,构建成功,没有“chmod +x”错误消息。

        我正在构建的项目基于 Appium 测试工具的 Visual Studio 项目模板,模板名称为“Develop_Automated_Test”。

        【讨论】:

          【解决方案8】:

          检查您的路径: 如果您为 TFS 使用单独的构建服务器(很可能),请确保 .csproj 文件中的所有路径TFS 服务器 路径匹配。当 *.csproj 文件引用我的开发机器路径而不是 TFS 服务器路径时,我在签入时遇到上述错误。

          删除多行命令:另外,作为预防措施,请尝试将多行命令删除为 xml 中的单行命令。我在 *.proj 中有以下导致 TFS 出现问题的 xml:

          <Exec Condition="bl.." 
          Command=" Blah...
          ..." </Exec>
          

          将上面的 xml 更改为此工作:

            <Exec Condition="bl.." Command=" Blah..." </Exec>
          

          【讨论】:

            【解决方案9】:

            我有同样的问题。尝试了以上所有答案。它实际上是抱怨一个 .dll 文件。我在 Visual Studio 中清理了项目,但 .dll 文件仍然存在,所以我从 bin 文件夹中手动删除了它,它可以工作。

            【讨论】:

              【解决方案10】:

              希望这对某人有所帮助,但我有预构建事件和构建后事件,它一直在抱怨一个名为“Microsoft.Common.CurrentVersion.targets”的文件“项目中不存在目标“CoreBuild”。

              这是我为解决它所做的:

              1. 关闭项目
              2. 删除 .suo 文件(它会重新生成)
              3. 请团队成员提供该文件 (Microsoft.Common.CurrentVersion.targets) 的副本 - 我的不一样 - 我拿走了他的。
              4. 已编译 - 很好。

              我一定是以某种方式破坏了那个文件。

              【讨论】:

                【解决方案11】:

                我的批处理文件中没有语法错误,它在 VS 之外的 cmd 提示符下运行良好。 所以最后,我添加了

                exit 0
                

                在我的批处理文件末尾显式返回成功代码并开始工作。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2021-06-29
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-11-29
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-07-25
                  • 1970-01-01
                  相关资源
                  最近更新 更多