visual-studio-extensions - 如何使用 EnvDTE 以编程方式运行自定义工具或保存文件?

标签 visual-studio-extensions envdte

我想在少数 .tt 上保存/运行自定义工具来自我的扩展的文件。我不想遍历解决方案/项目中的所有文件,而是希望能够使用文件的相对(或完整)路径来执行保存/运行自定义工具。

有没有办法获得ProjectItem给定文件路径( $(SolutionDir)/MyProject/MyFile.tt )的对象,以便我可以在其上执行方法?

最佳答案

您可以使用 FindProjectItem EnvDTE.Solution的方法键入以按名称查找当前解决方案中的文件。 ExecuteCommand方法依赖于当前的 UI 上下文;所以必须选择该项,否则调用失败。

private bool TryExecuteTextTemplate(string filename)
{
    var dte = (DTE2)this.GetService(typeof(SDTE));
    Solution solution = dte.Solution;
    if ((solution != null) && solution.IsOpen)
    {
        VSProjectItem projectItem;
        ProjectItem item = solution.FindProjectItem(filename);
        if (item != null && ((projectItem = item.Object as VSProjectItem) != null))
        {
            // TODO: track the item in the Solution Explorer

            try
            {
                projectItem.RunCustomTool();
                return true;
            }
            catch (COMException) 
            { 
            }
        }
    }

    return false;
}

关于visual-studio-extensions - 如何使用 EnvDTE 以编程方式运行自定义工具或保存文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17597758/

相关文章:

c# - 确定 Mono.Cecil.MethodDefinition 是否引用与给定 EnvDTE.CodeFunction 相同的函数

visual-studio-2015 - 如何删除在删除或更新过程中出现 'Object reference not set to an instance of an object' 错误的 Visual Studio 扩展?

visual-studio - Visual Studio 2015 无法加载包,因为 Microsoft.VisualStudio.Shell.15.0 无法加载

.net - 构建项目之前的 VB.NET EnvDTE 最新检查

c# - 如何使用 DTE 从 VS 2015/2017 的错误列表中获取错误代码?或者其他方式可以获得错误代码?

visual-studio - Visual Studio 2012 上的 Env.DTE 使用有时会引发 MK_E_UNAVAILABLE

c# - 从 T4 模板中的 CodeProperty 检索属性类型

c# - 在 ITextViewLine 上运行正则表达式(Visual Studio 扩展)

c# - 如何在 Visual Studio 启动时显示对话框。 - VS 扩展

visual-studio-2010 - 如何以编程方式创建空的 Visual C++ 项目?