首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在TextTemplate(t4)中使用自定义类型时出错

在TextTemplate(t4)中使用自定义类型时出错
EN

Stack Overflow用户
提问于 2011-01-16 15:28:55
回答 1查看 662关注 0票数 1

我创建了MVC项目,并在其中添加了"Class1.cs“(在同一个项目中) Class1代码:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MvcApplication2.Models;
namespace MvcApplication2
{
    public class EntityAttribute
    {
        public string Name { get; set; }
    }
    public class Entity
    {
        public List<EntityAttribute> Attributes { get; set; }
        public string Name { get; set; }
    }
    public class Class1
    {
        public static string getTable()
        {
            return "tbl";
        }
    }
}

我有文本模板文件.tt:

代码语言:javascript
复制
<#@ template debug="true" language="C#" #>
<#@ output extension=".cs" #>
<#@ assembly name="$(SolutionDir)\MvcApplication2\bin\MvcApplication2.dll" #>
<#@ import namespace="MvcApplication2" #>
<#
    string s = Class1.getTable();
#>

当我在CustomTool上运行TextTemplate时,会得到以下错误:

代码语言:javascript
复制
Error   2   Compiling transformation: Metadata file 'MvcApplication2.dll' could not be found C:\Users\Igor\Documents\Visual Studio 2010\Projects\MvcApplication2\MvcApplication2\TextTemplate1.tt   1   1   MvcApplication2

当我将"<#@程序集name="MvcApplication2.dll“#>”更改为"<#@ assembly name=“C:\User\Igor\Documents\Visual name= #>

我得到以下错误:

代码语言:javascript
复制
Error 2 Compiling transformation: 'MvcApplication2.Class1' does not contain a definition for 'getTable' c:\Users\Igor\Documents\Visual Studio 2010\Projects\MvcApplication2\MvcApplication2\TextTemplate1.tt 8 20

我的错误在哪里??谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-18 11:52:29

我发现了问题。

关于第一错误:当无法生成tt文件时,这被认为是错误,并且应用程序没有编译,分别不存在'MvcApplication2.dll‘。

解决方案:注释所有它tt文件和构建应用程序。然后,取消所有tt文件中的注释,然后再次运行CustomTool。

关于第二错误:正如我前面所说的,如果无法生成tt,则这被认为是错误,应用程序没有编译,您所做的所有更改都没有保存,因此它说找不到某种类型/方法(它们只是在dll中不存在)。

解决方案:如在解决方案中所做的。

--但是

即使在运行CustomTool时没有发生错误,在构建时也会出现错误,因为当其中一个VisualStudio和T4已经在使用它时,它们希望使用dll。

解决方案:使用T4Toolbox和change

代码语言:javascript
复制
<#@ assembly name="$(SolutionDir)\MvcApplication2\bin\MvcApplication2.dll" #>

代码语言:javascript
复制
<#@ VolatileAssembly processor="T4Toolbox.VolatileAssemblyProcessor" name="$(SolutionDir)\MvcApplication2\bin\MvcApplication2.Dll" #>

您可以阅读这篇文章,并在GEORGE的网站这里中下载工具箱

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4706182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档