Process.Start忽略在编译时T4文本模板转换期间运行应用程序的命令

时间:2012-11-15 14:25:07

标签: c# t4

我正在尝试从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中编译我的解决方案。

0 个答案:

没有答案