1

svn infoT4 テキスト テンプレートのコードからコマンドを実行するローカル svn HEAD リビジョン番号を取得しようとしています。このコマンドの結果を取得するコードは次のとおりです。

private string GetSvnInfo()
{
    var psi = new ProcessStartInfo(fileName: "cmd", arguments: "/c svn info -r HEAD")
    {
        RedirectStandardOutput = true,
        UseShellExecute = false,
        CreateNoWindow = true,
        WorkingDirectory = Host.ResolvePath(""),
    };
    var process = Process.Start(psi);

    var res = process.StandardOutput.ReadToEnd();
    process.WaitForExit(100);

    return res;
}

このテンプレートを実行すると、正常に動作します。ただし、ビルド中に自動的に実行されると、コマンドは単に無視されます。

svn.exeまた、代わりに開始して引数としてcmd渡そうとしinfo -r HEADましたが、Process.Start() で Win32Exception が発生しました。パーミッション関連の問題のようですが、まず、よくわかりません。次に、コンパイル時の T4 Text Template Transformation 中にパーミッションに関連するものを見つけることができませんでした。

また、さまざまなアプリも試しました。たとえば、sqlcmd結果は同じです。

問題は、コンパイル時の T4 テキスト テンプレート変換中に cmd からアプリを実行するにはどうすればよいかということです。どんな助けでも大歓迎です。

管理者権限でVS 11でソリューションをコンパイルします。

4

0 に答える 0