t4未找到"VisualStudioHelper"

Mic*_*ris 6 c# t4 visual-studio-2012 tangible-t4-editor

我正在尝试从VS2012项目生成代码进行一些实验,但我无法使这段t4代码工作

var project = VisualStudioHelper.CurrentProject;
Run Code Online (Sandbox Code Playgroud)

因为无法找到VisualStudioHelper.

我应该在我的t4中安装/包含什么才能使VisualStudioHelper可用?

Dar*_*iak 7

VisualStudioHelper是来自有形T4编辑器的自定义类.

要使用此类,请为Visual Studio安装Tangible T4 Editor,然后:

  1. 在Visual Studio中打开Tangible T4菜单,然后单击模板库.
  2. 点击左下角的"立即更新"图标.
  3. 从目录树中选择:有形> Visual Studio CodeModel.
  4. 在文件菜单中,在"走Visual Studio代码模型"上单击鼠标右键,然后选择"添加到解决方案..."
  5. 选择"VisualStudioHelper.ttinclude".
  6. 在.tt文件中,请参阅VisualStudioHelper,如下所示:

<#@ include file="VisualStudioHelper.ttinclude" #>


Paw*_*wel 1

什么是VisualStudioHelper?这似乎是一个自定义的东西,而不是 T4 模板引擎中内置的东西。如果您需要访问当前项目,您可以尝试以下操作:

var dte = (EnvDTE.DTE)((IServiceProvider)Host).GetService(typeof(EnvDTE.DTE));
var project = dte.Solution.FindProjectItem(Host.TemplateFile).ContainingProject;
Run Code Online (Sandbox Code Playgroud)

不要忘记导入 T4 模板顶部的程序集:

<#@ assembly name="EnvDTE" #>
Run Code Online (Sandbox Code Playgroud)

  • 是的,它是一个自定义工具,我找到了它的一个版本@ https://github.com/PombeirP/T4Factories/blob/master/T4Factories.Testbed/CodeTemplates/VisualStudioAutomationHelper.ttinclude (2认同)