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

时间:2013-05-17 15:15:44

标签: c# visual-studio-2012 t4 t4-toolbox

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

这一代本身只需要几秒钟。但是,在这段时间内,Visual Studio占用CPU的时间大约为3分钟。 有什么方法可以避免这种长时间停顿吗?

我的模板看起来像这样

<#@ template language="C#" debug="false" #>
<#@ output extension="txt" #>
<#@ assembly name="System.Core" #>
// imports ommitted...
<#@ assembly name="T4Toolbox.dll"#>
<#@ include file="T4Toolbox.tt" #>
<#       
    // about 100 files
    var filenames = MyHelper.GetFilenamesToProcess();

    // for each input file, generate two output files
    foreach(string filename in filenames)
    {      
       var mainPartTemplate = new MainPartTemplate();
       mainPartTemplate.RenderToFile(fileName + ".cs");

       var designerPartTemplate = new DesignerPartTemplate();
       designerPartTemplate.RenderToFile(fileName + ".designer.cs");        
    }

    // Beep so I can hear when the script finishes.
    Console.Beep(); 
    // It takes about two seconds to get here, then there is a 3 minute wait while 
    // Visual Studio is unresponsive.
#>

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

0 个答案:

没有答案