2016-05-24 19 views
0

フォローを達成する方法はありますか?私は現在、TFSに格納されているものと、SSRSレポート、SSISパッケージ、SQLストアドプロシージャ/テーブル定義のライブバージョンとの比較を行いたいと考えています。 1.レポートの定義を抽出します 2. TFSに追加 3.レポートの以前のバージョンと現在のバージョンの比較を実行します。 4.差異のあるレポートを送信/保存するTFS - 比較タスクの自動化

どのように私は自動的にそれを達成できますか、私はTFS APIを使用することを考えていましたが、どこから始めたらよいか分かりません。

は、あなたの助けをありがとう ラファウ

答えて

0

TFSのAPIおよびSSRSを使用してレポートを生成するReportExecutionService Classによる方法があります。

すでにWebサービス参照が プロジェクトに追加されている場合は、指定されたパラメータを持つファイルが生成されます。ここでは の開始日と終了日がパラメータとして提供され、レポートは で、Render()メソッドを使用して生成されます。生成されたレポート後にソースLink

private void GenerateReport() 
    { 
    ReportExecutionService rs = new ReportExecutionService(); 
    rs.Credentials = System.Net.CredentialCache.DefaultCredentials; 
    rs.Url = "http://<TFS server name>/reportserver/ReportExecution2005.asmx"; 

    // Render arguments 
    byte[] result = null; 
    tring reportPath = @"<SSRS report path>"; 
    string format = "PDF"; 
    string historyID = null; 
    string devInfo = @"<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>"; 

    // Prepare report parameter. 
    ParameterValue[] parameters = new ParameterValue[2]; 
    parameters[0] = new ParameterValue(); 
    parameters[0].Name = "StartDateParam"; 
    parameters[0].Value = "2016-05-01 00:00:00"; 
    parameters[1] = new ParameterValue(); 
    parameters[1].Name = "EndDateParam"; 
    parameters[1].Value = "2016-05-30 00:00:00"; 
    parameters[2] = new ParameterValue(); 
    parameters[2].Name = "AreaParam"; 
    parameters[2].Value = "[Work Item].[Area Hierarchy].[All]"; 
    parameters[3] = new ParameterValue(); 
    parameters[3].Name = "WorkItemTypeParam"; 
    parameters[3].Value = "[Work Item].[System_WorkItemType].&[Task]"; 
    parameters[4] = new ParameterValue(); 
    parameters[4].Name = "StateParam"; 
    parameters[4].Value = "[Work Item].[System_State].&[Active]"; 
    parameters[5] = new ParameterValue(); 
    parameters[5].Name = "TrendLineParam"; 
    parameters[5].Value = "both"; 

    DataSourceCredentials[] credentials = null; 
    string showHideToggle = null; 
    string encoding; 
    string mimeType; 
    string extension; 
    Warning[] warnings = null; 
    ParameterValue[] reportHistoryParameters = null; 
    string[] streamIDs = null; 

    ExecutionInfo execInfo = new ExecutionInfo(); 
    ExecutionHeader execHeader = new ExecutionHeader(); 

    rs.ExecutionHeaderValue = execHeader; 

    execInfo = rs.LoadReport(reportPath, historyID); 

    var parameters_ = rs.GetExecutionInfo().Parameters; 

    rs.SetExecutionParameters(parameters, "en-us"); 
    String SessionId = rs.ExecutionHeaderValue.ExecutionID; 

    Console.WriteLine("SessionID: {0}", rs.ExecutionHeaderValue.ExecutionID); 

    try 
    { 
     result = rs.Render(format, devInfo, out extension, out encoding, out mimeType, out warnings, out streamIDs); 

    execInfo = rs.GetExecutionInfo(); 

    Console.WriteLine("Execution date and time: {0}", execInfo.ExecutionDateTime); 

    } 
    catch (SoapException e) 
    { 
     Console.WriteLine(e.Detail.OuterXml); 
    } 
    // Write the contents of the report to an MHTML file. 
    try 
    { 
     FileStream stream = File.Create("report.pdf", result.Length); 
     Console.WriteLine("File created."); 
     stream.Write(result, 0, result.Length); 
     Console.WriteLine("Result written to the file."); 
     stream.Close(); 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine(e.Message); 
    } 

} 

、あなただけのTFSサーバーにそれらを確認する必要があります。次に、内部差分エンジンを使用して2つのファイルを比較し、DiffSegmentsのリンクリストを返すDifference.DiffFilesメソッドを使用するだけです。詳細は、MSDN blogを参照してください。

+0

あなたの答えはパトリックにありがとうございますが、私が求めていたものではありません。 SSRSサーバーに保存されているレポート(.rdlファイル)のソースを、TFSで現在チェックインされているものと自動的に比較したいと思います。 – dobrzak

+0

なぜ2つのファイルを比較したいのですか?状況に応じて、2つのファイルまたは同じファイルの2つのバージョンの違いを明確に表示するためにVSにdiffウィンドウがあります。 https://www.visualstudio.com/en-us/docs/tfvc/compare-files TFS APIを使用してファイルを比較する方法については、次のブログを参照してください。https://blogs.msdn.microsoft.com/mohamedg/2009/03/08/how-to-diff-files-using-tfs-apis/ –

+0

SSRS/SSIS/SQLの内容がTFSと同じかどうかを確認するために、それを調査しなければ。異なることに取り組んでいる人はほとんどなく、常に正しくプロセスに従うとは限りません。 – dobrzak