【问题标题】:Adding custom attributes to MSBuild Task向 MSBuild 任务添加自定义属性
【发布时间】:2013-03-04 02:41:45
【问题描述】:

我让 TeamCity 为 ASP.NET MVC 3 应用程序运行 MSBuild 任务。现在时不时地(似乎是随机地)抛出“ASPNETCOMPILER:错误 ASPRUNTIME:正在运行线程的应用程序域已被卸载。”。它发生在 MSBuild 执行“MvcBuildViews”并运行 aspnet_compiler.exe 时。

现在我知道 aspnet_compiler.exe (http://msdn.microsoft.com/en-us/library/ms229863(vs.80).aspx) 有一个“-errorstack”开关,可以为我提供有关此错误的堆栈跟踪信息,但似乎 AspNetCompiler Task 无法设置此属性(@ 987654322@).

所以我的问题是 - 有没有办法将任何自定义属性传递给现有的 MSBuild 任务,或者我必须在 MSBuild 之外手动运行 aspnet_compiler.exe 以启用 -errorstack 功能?

【问题讨论】:

  • 我发现了一个提示,可能对您的情况有所帮助——这可能值得一试。在 Visual Studio 中,转到工具 -> 选项 -> 项目和解决方案(如果找不到,请选中“显示所有设置”框)->“构建并运行”。然后将输出详细程度设置为诊断。打开输出窗口 (Ctrl-Alt-O) 并执行构建。
  • 感谢 David 的提示,在我们的例子中,虽然问题仅发生在构建服务器上,所以 Visual Studio 中的额外诊断不会有太大帮助。无论如何,我认为我们找到了罪魁祸首,我将在下面写一个回复。干杯。

标签: asp.net-mvc msbuild msbuild-task aspnet-compiler


【解决方案1】:

我们找到了导致此错误的原因(但不是真正如何将自定义属性添加到 MSBuild 任务)。当构建服务器内存不足时,似乎会发生此异常。

【讨论】:

    【解决方案2】:

    您可以通过在您的 csproj 文件中使用 Exec MSBuild 任务来实现此目的。比如原来的任务:

    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
    

    变成:

    <Exec Command="$(MSBuildFrameworkToolsPath)\aspnet_compiler.exe -v temp -errorstack -p $(WebProjectOutputDir)" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-09
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多