svn info
T4 テキスト テンプレートのコードからコマンドを実行するローカル 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でソリューションをコンパイルします。