【问题标题】:Visual Studio Online MSBuild fails when doing bower install执行凉亭安装时 Visual Studio Online MSBuild 失败
【发布时间】:2014-10-15 10:35:21
【问题描述】:

我有一个简单的 web 项目,其中包含 bower.json、package.json 和 Gruntfile.js 我已修改我的 .csproj 文件以添加要运行的目标

  1. npm 安装
  2. 凉亭安装
  3. 咕噜构建

npm install 运行良好,但无法运行 bower install。 这就是我从日志中得到的全部内容

node_modules\.bin\bower cache clean
node_modules\.bin\bower install

C:\a\src\TestProj\TestProj\TestProj.csproj(137,5): error MSB3073: The command ".\node_modules\.bin\bower install" exited with code 1.

这是我在 csproj 定义中所做的事情

<Target Name="BeforeBuild">
    <Exec Command="npm cache clean" />
    <Exec Command="npm install" />
    <Exec Command="node_modules\.bin\bower cache clean" />
    <Exec Command="node_modules\.bin\bower install" />
</Target>

这是我的 bower.json

 "name": "TestProj",
 "version": "0.0.1",
 "description": "",
 "main": "index.html",
 "moduleType": [
   "amd"
 ],
 "authors": [
   "Sujesh Arukil"
 ],
 "license": "MIT",
 "private": true,
 "ignore": [
   "**/.*",
   "node_modules",
   "bower_components",
   "test",
   "tests"
 ],
 "devDependencies": {
   "knockoutjs": "~3.2.0"
 }

【问题讨论】:

  • 启用诊断日志记录,然后从那里开始。

标签: msbuild bower azure-devops bower-install


【解决方案1】:

首先,启用诊断日志记录。

然后修改你的目标:

<Target Name="BeforeBuild">
    <Exec Command="npm cache clean" />
    <Exec Command="npm install" />
    <Message Condition="!EXISTS('node_modules\.bin\bower')" Text="bower does not exist" Importance="high" />
    <Exec Command="node_modules\.bin\bower cache clean" />
    <Exec Command="node_modules\.bin\bower install" />
</Target>

【讨论】:

  • 凉亭在那里,因为缓存清理工作。 bower install 是失败的。我将启用诊断日志记录并通知您。
  • 诊断日志中只有我提供的内容。
【解决方案2】:

您应该能够下载一个额外的 MSBuild 日志文件,其中可能包含更多详细信息。如果您查看之前失败的构建而不是单击顶部的“查看日志”链接,然后查看详细信息,您应该会在错误消息后面几行看到日志文件的链接。

如果你因为 git 不可用而收到该错误,但我不得不猜测。

【讨论】:

  • 我正在尝试通过 PowerShell 脚本来实现这一点。当脚本尝试运行 bower install 时,npm install 工作正常,它失败并出现错误:git is not installed or not in the PATH
  • 不确定它是否对 PowerShell 脚本有帮助,但我使用我的 msbuild 脚本中的 NoGit
  • 我将 NoGit 添加到我的 packages.json 中,但这并没有帮助。我遇到了同样的错误。
【解决方案3】:

凉亭安装失败,因为我安装的两个模块依赖于不同版本的 jQuery,找不到解决方案并需要用户输入。通过提供解决方案部分来修复它。

【讨论】:

    【解决方案4】:

    我可以通过在 .csproj 文件中注释掉 bower install 命令来解决这个问题

      <Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
        <!--<Exec Command="bower install" />-->
        <Exec Command="dotnet bundle" />
      </Target>
    

    【讨论】:

      【解决方案5】:

      通过删除 .csproj 文件中的以下代码为我工作。

      <Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
      <Exec Command="bower install" />
      <Exec Command="dotnet bundle" />
      

      但是它确实导致了一些打字稿问题与重复的方法名称,将以下代码添加到 tsconfig.json 文件中

      "exclude": [ "obj" ]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-17
        • 1970-01-01
        • 2016-04-13
        • 1970-01-01
        • 2014-10-12
        • 2013-10-31
        • 2014-09-16
        • 1970-01-01
        相关资源
        最近更新 更多