我正在尝试从T4文本模板中的代码获取本地svn HEAD修订号执行svn info
命令。这是获得此命令结果的一段代码:
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中编译我的解决方案。