问题标签 [t4-toolbox]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9338 浏览

visual-studio-2010 - T4 编译转换:找不到类型或命名空间名称“模板”

我正在尝试使用模板 T4 生成 Xaml 文件并像这样定义可重用文件 Xaml.tt

但我有一个错误:找不到模板命名空间,有人知道吗?还是一样的错误!!令人沮丧!

错误:T4 编译转换:找不到类型或命名空间名称“模板”(您是否缺少 using 指令或程序集引用?)

我对生成器遇到了同样的错误。

我通过添加新项目 Code Generation > Template 创建了这些文件

如何创建 Xaml 文件

该文件的默认结构是并且仍然无法识别模板。

是我缺少的程序集引用还是指令?

顺便说一句,我也在使用 T4 Toolbox

0 投票
1 回答
1504 浏览

t4 - 在不安装 T4 Toolbox 的情况下使用 VolatileAssembly 指令

我想VolatileAssembly从 T4 Toolbox 使用,但不想要求所有开发人员都安装 T4 Toolbox。

是否可以在源代码管理中包含带有项目的 DLL 并通过路径引用它?

0 投票
3 回答
1797 浏览

c# - T4 模板 - 将 Visual Studio 2010 中的解决方案资源管理器从一个应用程序域刷新到另一个应用程序域

我正在尝试刷新解决方案资源管理器的工具窗口,以便可以看到嵌套的新创建文件。我知道 T4 模板在一个应用程序域中执行,并使用远程处理对 Visual Studio Appdomain 进行调用。我收到这个关于序列化的错误。那么有没有一种方法可以通过首先激活它来刷新解决方案资源管理器工具窗口(solExplorer.Parent)(有人告诉我)。

在程序集“Microsoft.VisualStudio.Platform.WindowManagement, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”中键入“Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase”未标记为可序列化。

更新:基于 Gereth 的评论。
谢谢,Gereth 我试过了,但它返回 COMException,
我没有关于 Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase 类的序列化的错误,并且激活方法似乎已经成功。 错误现在出现在 dte.ExecuteCommand 方法上

执行此行时引发 COMException:

消息“错误 HRESULT E_FAIL 已从对 COM 组件的调用中返回。”
源“EnvDTE80”
StackTrace“在 EnvDTE80.DTE2.ExecuteCommand(String CommandName, String CommandArgs)
ErrorCode -2147467259

接下来要尝试什么?

谢谢拉德

0 投票
1 回答
1530 浏览

t4 - 是否可以在 VS2008 中直接调用 T4 自定义工具 TextTemplatingFileGenerator,例如使用插件

我想知道是否可以在 VS2008 中直接调用 T4 自定义工具 TextTemplatingFileGenerator,例如使用插件。

我的情况是我在解决方案中有元数据(xml)文件。T4 模板读取这些文件以在与元数据文件相同的文件夹中生成 C# 类文件。

目前我有 T4 模板扫描解决方案以搜索特定扩展名并创建文件。如果能够运行使用元数据文件路径调用模板的加载项,那就太好了。请注意,我非常广泛地使用 VS 主机将生成的文件添加到项目中。

我想知道是否可以直接从加载项中调用 TextTemplatingFileGenerator 以及是否可以实现我想要的。

还要考虑的是我正在使用 T4toolbox。

问候,伊利亚斯

0 投票
1 回答
1935 浏览

visual-studio - 使用 T4 模板的 Visual Studio 项模板

我想创建一个 Visual Studio 项目模板,通过在将其添加到解决方案时执行 T4 模板在解决方案中生成项目(例如自定义 .aspx 页面)。我阅读了以下帖子:T4 模板和 Visual Studio 项目模板

是否可以在不使用 GAX 的情况下实现这一点。我想首先使用标准项目项目模板和仅 T4 模板,这不需要 GAX。

请建议,

谢谢,

马尤尔

0 投票
2 回答
631 浏览

visual-studio - 在 VS Extension 中调用文本转换

我想创建一个 Visual Studio 项目模板,通过在将其添加到解决方案时执行 T4 模板在解决方案中生成项目(例如自定义 .aspx 页面)。为此,我正在使用此链接: http: //msdn.microsoft.com/en-us/library/gg586947.aspx 谁能告诉我如何获取服务提供商,这在上面链接的代码中提到。为了解决这个问题,我写道:

EnvDTE.DTE dte = (EnvDTE.DTE)Package.GetGlobalService(typeof(EnvDTE.DTE)); // 获取一个服务提供者——你怎么做取决于上下文:

IServiceProvider serviceProvider = new Microsoft.VisualStudio.Shell.ServiceProvider(dte as Microsoft.VisualStudio.OLE.Interop.IServiceProvider);

但它给了我一个争论空异常错误,因为变量 dte 仍然为空。为什么它是空的?我不知道我这样做是对还是错。请建议我如何实现上面链接中代码中给出的 serviceprovider 以便我可以继续前进。如果可能,请给我一个代码示例。

请建议,

谢谢,马尤尔

0 投票
0 回答
2048 浏览

build - 使用 T4ToolBox 在构建上应用 .tt

很长一段时间以来,我的解决方案中都有一些 .tt 文件。我最近决定在构建时通过添加到我的 csproj 来启动转换:

我有一个第一个 .tt 文件(First.tt),其中包括来自同一解决方案的另一个项目的第二个 .tt 文件(Second.tt):

在 Second.tt 中,我包括 T4Toolbox.tt :

当我使用右键单击启动 First.tt -> 运行自定义工具时,一切正常。但是当我重建解决方案时,我收到此错误: Failed to resolve include text for file:E:\Dev\MySolution\FirstProject..\SecondProject\T4Toolbox.tt

所以我尝试使用 T4ToolBox.tt 的安装路径:

但是我遇到了另一个错误:找不到名为“dte”的指令的名为“T4Toolbox.DteProcessor”的处理器

如果有人可以提供帮助,那就太好了!

编辑:我没有成功,但它更好。我删除了 Second.tt 中的根路径,并将以下几行添加到 FirstProject 的 csproj 中:

当我尝试构建时,找到了 dte 处理器,但仍然出现错误:运行转换代码时抛出异常。该过程无法继续。引发了以下异常:

0 投票
2 回答
355 浏览

visual-studio-2010 - 使用 T4 更新指定文本块

我正在使用 T4 模板和 T4 工具箱来生成文本。

我想根据地区进行部分更新。例如,在第一次通过时会生成所有内容,但如果再次更新文件,则只会更新 $regions 中的代码块。每个 $regions 都有一个不同的名称。

我正在寻找有关如何实施的建议。

一种方法是使用定制的预处理器,去除除生成的代码区域之外的所有内容。另一种可能是在找到生成的代码区域时清除 T4 处理器的缓冲区,然后在找到该区域的末尾时,替换生成文件的区域中与 T4 处理器已解析的区域相对应的文本。

假设

  • 生成的代码区域不会包含应该被解析的块
  • 每个生成的文本区域都有一个不同的名称

简单的例子

注意:我意识到这个问题与这个问题相似但从未提供过合适的答案。我正在寻找可行的解决方案,而不是“无法完成”。

0 投票
1 回答
202 浏览

c# - T4Toolbox 没有生成文件扩展名

我正在使用 T4 工具箱生成 cs 文件。但结果会生成正确的 C# 文件,但是......没有扩展名。什么问题?

0 投票
0 回答
247 浏览

c# - 为什么我的 T4 模板创建设计器文件时会有很大的延迟?

我在 Visual Studio 2012 中使用带有T4 工具箱的 T4 模板来生成大约 100 个文件并将它们添加到项目中。我有两个模板,其中一个输出.cs文件,另一个输出相应的.designer.cs。以这种方式命名它似乎会自动分配<DependentUpon>.csproj 文件中的属性。(这是 VS2012 的功能吗?还是 T4Toolbox?)

生成本身只需要几秒钟。但是,在此期间 Visual Studio 会占用 CPU 大约 3 分钟的长时间停顿。有什么办法可以避免这种长时间的停顿吗?

我的模板看起来像这样

如果我将扩展名.designer.cs更改为其他任何内容,则脚本运行后不会出现延迟,但<DependentUpon>随后会丢失标记,因此文件在解决方案资源管理器中被分隔,并且右键单击时“在设计器中查看”选项不可用.