0

CruiseControl.NET プロジェクトのパブリッシャー領域に、html ファイルと png ファイルのコレクションを成果物ディレクトリに正常にコピーするマージ タスクがあります。次のように、ダッシュボードでHtmlReportPluginを有効にしました。

   <buildPlugins>
      <buildReportBuildPlugin>
        <xslFileNames>
          <xslFile>xsl\header.xsl</xslFile>
          <xslFile>xsl\compile.xsl</xslFile>
          <xslFile>xsl\modifications.xsl</xslFile>
          <xslFile>xsl\MsTestSummary2010.xsl</xslFile>
        </xslFileNames>
      </buildReportBuildPlugin>
      <buildLogBuildPlugin />
      <xslReportBuildPlugin description="MSTest2010 Report" actionName="MSTestBuildReport2010" xslFileName="xsl\MsTestReport2010.xsl"></xslReportBuildPlugin>
      <xslReportBuildPlugin description="MSTest Coverage 2010" actionName="MSTestBuildCoverReport2010" xslFileName="xsl\MsTestCover2010.xsl"></xslReportBuildPlugin>
      <htmlReportPlugin description="Html Report" actionName="HtmlReport" htmlFileName="index.html" />
    </buildPlugins>

index.html は問題なく提供されますが、index.html 内の相対リンクは機能していないようです。index.html のソースは次のとおりです。

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Frameset//EN'
 'http://www.w3.org/TR/html4/frameset.dtd'>
<html><head><title>
all.cov
</title>
<meta http-equiv=Content-Type content='text/html;charset=utf-8'>
</head>
<frameset cols='25%,75%'>
    <frame src=nav-folder.html>
    <frame name=right src=p0.html>
    <noframes>
    <p>Your browser does not support frames. See <a href=nav-folder.html>nav-folder.html</a>
    </noframes>
</frameset>
</html>

index.html を読み込むときに表示されるエラーの 1 つを次に示します (他のエラー メッセージについては、「nav-folder」を「p0」に置き換えてください)。

「/」アプリケーションでサーバー エラーが発生しました。

不明なオブジェクト名: nav-folder

説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.ApplicationException: 不明なオブジェクト名: nav-folder

ソース エラー:

現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。

スタックトレース:

[ApplicationException: Unknown object name : nav-folder]
Objection.ObjectionStore.GetByName(String name) +307
ThoughtWorks.CruiseControl.WebDashboard.MVC.Cruise.CruiseActionFactory.CreateHandler(String actionName) +231
ThoughtWorks.CruiseControl.WebDashboard.MVC.Cruise .CruiseActionFactory.Create(IRequest リクエスト) +38
ThoughtWorks.CruiseControl.WebDashboard.MVC.RequestController.Do() +155 ThoughtWorks.CruiseControl.WebDashboard.MVC.ASPNET.HttpHandler.ProcessRequest(HttpContext コンテキスト) +651
System.Web.CallHandlerExecutionStep. System.Web.HttpApplication.IExecutionStep.Execute() +625 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +27

いずれかの参照ファイル (たとえば、http://localhost/server/local/project/Code_Coverage/build/log20120809181334Lbuild.168.xml/RetrieveBuildFile.aspx?file=p0.html) で RetrieveBuildFile.aspx を使用すると、ファイルは問題なく読み込まれますが、最初の例のように、相対ファイルは読み込まれません。

IIS で相対ファイル パスを正しく解決するために、CruiseControl.NET web.config で何かしなければならないことはありますか? CruiseControl.NET 1.8.0 を使用しており、Windows 2008 で IIS 7 を実行しています。CruiseControl.NET 1.6 でも同じ問題が発生することを確認しました?? Windows 7 で実行されている IIS で。

4

3 に答える 3

2

残念ながら、HTML tidyは、無効なHTMLが含まれているため、BullseyeCodeCoverageHTMLを好みませんでした。そのため、そのソリューションは機能しません。

CruiseControlは正規表現を使用してソースリンクを検索しますが、HTML属性に引用符がなく、HTML属性ではない文字列フラグメントと一致する可能性があるため、これは完全ではありません。HtmlAgilityPackを使用してHTMLを解析するようにCruiseControl.NETソースコードを変更しましたが、これは非常にうまく機能しているようです(少なくとも私のテストケースでは)。

于 2012-08-15T16:40:59.443 に答える
0

問題は、CruiseControl.NET が引用符で囲まれていない値を持つ属性を持つ HTML を好まないことでした。Bullseye CodeCoverage によって生成された出力を使用していますが、その出力には引用符で囲まれていない値を持つ属性があります。HTML Tidyを使用して引用符を追加しています。

于 2012-08-14T02:42:18.397 に答える