0

一連のプロジェクトのビルドを開始するプログラムを作成しています。コードからバッチ ファイルを呼び出して、Visual Studio 2010 コマンド プロンプトを起動し、ビルドするために選択したプロジェクトに基づいてさまざまな tfsbuild Start コマンドを実行します。次の引数を指定します: TFSBuild start /collection:http://[myServer]:8080//builddefinition:"myProject/myBuildDefinition". バッチ ファイルを実行すると、次のエラーが表示されますが、TFS に戻るとビルドが開始され、成功します。

Unhandled Exception: System.NullReferenceException: Object reference not set to
an instance of an object.
   at Microsoft.TeamFoundation.Build.Client.InformationNodeConverters.GetBuildSt
eps(IBuildInformation buildInformation)
   at Microsoft.TeamFoundation.Build.CommandLine.CommandStart.build_StatusChange
d(Object sender, StatusChangedEventArgs e)
   at Microsoft.TeamFoundation.Build.CommandLine.CommandStart.Run()
   at Microsoft.TeamFoundation.Build.CommandLine.BuildCommandLine.RunCommand(Str
ing commandName, String[] args, Boolean& showExitCode)
   at Microsoft.TeamFoundation.Client.CommandLine.RunCommand(String[] args)
   at Microsoft.TeamFoundation.Client.CommandLine.Run(String[]& args)
   at Microsoft.TeamFoundation.Build.CommandLine.BuildCommandLine.Main(String[]
args)

この問題を知っている人はいますか?tfsBuild を呼び出すときに引数がありませんか?

【使用C#コード】

private void _buildButton_Click(object sender, EventArgs e)
    {
        if (_selectedProjectFolder.Equals("ProjectA"))
            Process.Start(@"N:\Build batch files\ProjectA_Build.bat");

        else if (_selectedProjectFolder.Equals("ProjectB"))
            Process.Start(@"N:\Build batch files\ProjectB_Build.bat");

        else if (_selectedProjectFolder.Equals("ProjectC"))
        {
            if (_build32RadioButton.Checked == true)
                Process.Start(@"N:\Build batch files\ProjectC_Build_32.bat");

            else if (_build64RadioButton.Checked == true)
                Process.Start(@"N:\Build batch files\ProjectC_Build_64.bat");
        }            
    }

【バッチファイルの内容】

Call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
TFSBuild start /collection:http://[MyServer]:8080/ /builddefinition:"MyProject/MyBuild"
4

1 に答える 1

0

この問題は、メソッド「InformationNodeConverters.GetBuildSteps(IBuildInformation)」が新しいバージョンの TFS サーバーと通信しているときに発生します。

ビルドステップは Visual Studio Team System 2008 Team Foundation Server 以降では使用されなくなり、IBuildMessage、IBuildError、IBuildWarning、IActivityTracking などのさまざまな新しい情報ノード タイプに置き換えられたことに注意してください。その結果、このメソッドは通常、新しいバージョンを実行しているサーバー (たとえば、Team Foundation Server 2010) と通信するときに空のリストを返します。

http://msdn.microsoft.com/en-us/library/ff734692(v=vs.100).aspx

于 2013-07-30T14:02:30.097 に答える