我正在尝试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 文本模板转换期间我无法找到与权限相关的任何内容。
而且我还尝试了不同的应用程序,例如sqlcmd
- 结果是一样的。
所以问题是 - 在编译时 T4 文本模板转换期间,我将如何让应用程序从 cmd 执行?任何帮助将不胜感激。
我在管理员权限下在 VS 11 中编译我的解决方案。