标签: t4

找不到MvcTextTemplateHost

我正在尝试在我的MVC项目中使用T4模板.这个截屏视频建议只需将MVC的现有T4模板复制到您的解决方案中并从那里开始.但是,当我尝试编译时,我收到此错误:

Error   1   Compiling transformation: The type or namespace name   
'MvcTextTemplateHost' could not be found (are you missing a using directive
or an assembly reference?)  
Run Code Online (Sandbox Code Playgroud)

我不知道这可能存在什么装配,谷歌对它没有多大帮助.有谁知道我应该参考什么组件?

asp.net t4

17
推荐指数
2
解决办法
6048
查看次数

T4代码生成:当前项目中的访问类型

使用T4代码生成,是否可以访问当前项目中定义的类型?

例如,如果我有一个接口,我想将其实现委托给另一个类,即

interface IDoSomething {
    public void do_something();
}

class DoSomethingImpl : IDoSomething {
    public void do_something() {
        // implementation...
    }
}

class SomeClass : IDoSomething {
    IDoSomething m_doSomething = new DoSomethingImpl();

    // forward calls to impl object
    public void do_something() {
        m_doSomething.do_something();
    }
}
Run Code Online (Sandbox Code Playgroud)

我想SomeClass用代码生成自动化呼叫转发; 这可能吗?

.net c# t4

17
推荐指数
1
解决办法
5015
查看次数

在T4模板中设置断点

我正在尝试在Visual Studio 2008中调试T4模板的执行.

我在Visual Studio 2008中调试T4模板时发现的所有信息都表示您可以在模板中设置断点(红点),就像它是常规代码文件一样.我安装了Clarius T4代码荧光笔,所以我的T4模板是彩色的,但我无法设置断点. 当我点击保证金时没有任何反应.

我已经尝试过Debugger.Break(),它启动了一个新的VS.NET实例,但它无法从我的模板加载代码.我收到一个对话框,上面写着"当前位置没有可用的源代码." 如果我在另一个实例中加载了相同的项目,如果我启动一个新实例,就会发生这种情况.

是什么赋予了?

debugging t4 visual-studio-2008 clarius-visual-t4

17
推荐指数
4
解决办法
9261
查看次数

Visual Studio T4与CodeSmith

我在过去的两年里一直在使用CodeSmith,并喜欢它为我做的事情.但是,我也知道T4内置于Visual Studio中,并且可以做一些很酷的东西.基于与VS2010中的朋友T4的对话,T4会更好.

所以问题是:我是否继续使用CodeSmith总线或是时候开始将我的所有模板转换为T4了?

更新 也许我对问题的解释方式并不清楚.显然,我不会删除我的cs模板并停止使用它们,直到我有新的模板工作.但是,在这一点上是否值得努力?T4在这一点上是否提供了优于CodeSmith的优势?是否有一些功能或一组功能,通过为T4编写我的模板,我会看到我的效率提高了100倍?

c# t4 generative-programming codesmith visual-studio

17
推荐指数
1
解决办法
7871
查看次数

T4获取解决方案的当前工作目录

我在Visual Studio 2010中使用T4,我想在我的解决方案中迭代文件,但是我发现T4源代码生成在一种沙箱中,当前工作目录在Visual Studio 10目录中在程序文件中.

有没有办法相对地引用T4文件的解决方案,以便它不会破坏构建,或者在没有相同文件结构的其他人的框中工作?

谢谢

c# t4 code-generation visual-studio

17
推荐指数
3
解决办法
1万
查看次数

CodeGenerationTools在哪里

在实体框架T4模板中,我可以使用类CodeGenerationTools.

例如:

void WriteProperty(**CodeGenerationTools** code, EdmProperty edmProperty)
{
    WriteProperty(Accessibility.ForProperty(edmProperty),
                  code.Escape(edmProperty.TypeUsage),
                  code.Escape(edmProperty),
                  code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
                  code.SpaceAfter(Accessibility.ForSetter(edmProperty)));
}
Run Code Online (Sandbox Code Playgroud)

但是,我找不到这个类的定义.

它来自哪个组件?它的成员是什么?

谢谢

t4 entity-framework

17
推荐指数
1
解决办法
6445
查看次数

用T4反射获得装配

我希望得到特定程序集中的所有类,这是我的代码

 var assembly=Assembly.GetExecutingAssembly();

 var assemblies = assembly.GetTypes().Where(t => String.Equals(t.Namespace, "RepoLib.Rts.Web.Plugins.Profiler.Models", StringComparison.Ordinal)).ToArray();
Run Code Online (Sandbox Code Playgroud)

当c#代码所有东西都没问题我得到我的程序集但是当写入t4文件我没有任何错误但我的程序集计数是.

c# reflection t4

17
推荐指数
1
解决办法
8493
查看次数

项目模板和C#生成中的T4

我想在Visual Studio项目模板中有一个T4模板,但我不希望在添加项目后,"tt"文件出现在项目中.简而言之,我想生成.cs文件,然后完全丢弃.tt文件.将项目添加到项目时,代码生成仅发生一次.

我设法将.tt文件添加到项目模板中,但我看不出如何在代码生成后丢弃它.

谢谢Laurent

t4 visual-studio

17
推荐指数
1
解决办法
568
查看次数

如何在T4模板中使用C#v6的最新功能?

我正在尝试在Visual Studio 2015中运行新的T4模板.但是它无法在此行编译:

var message = $"Linked table '{linkedTable}' does not exist.";
Run Code Online (Sandbox Code Playgroud)

编译器报告'$'字符是意外的.但是,根据新的字符串插值功能指南,此语法应在C#v6中有效.

有没有办法让T4模板引擎使用较新的C#版本,而不是在外部库中编译我的代码

更新:

以下是该文件的声明元素,作为参考:

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".sql" #>
<#@ SqlModelDirective processor="SqlModelDirectiveProcessor" #>

<#@ import namespace="System" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="Microsoft.SqlServer.Dac" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="Microsoft.SqlServer.Dac.Model" #>
Run Code Online (Sandbox Code Playgroud)

除了SqlModelDirective元素,我认为这是非常标准的.

.net c# t4 visual-studio visual-studio-2015

17
推荐指数
2
解决办法
2191
查看次数

在VS 2010中调试T4模板崩溃了IDE

我正在尝试使用Oleg Sych几年前发布的指令调试ADO.NET POCO实体生成器模板的略微修改版本.我按照建议修改了DbgJITDebugLaunchSetting键.

我得到一个对话框,表明已经命中了用户定义的断点.但是,VS 2010的原始实例只是崩溃并自动重启,而不是被提供使用VS 2010的新实例进行调试的选项.

是否可以使用VS 2010调试T4模板?

debugging t4 visual-studio-2010

16
推荐指数
2
解决办法
4342
查看次数