1

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

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:

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

当我在 TextTemplate 上运行 CustomTool 时,出现以下错误:

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

当我将“ <#@ assembly name="MvcApplication2.dll" #> ”更改为完整路径时“ <#@ assembly name="C:\Users\Igor\Documents\Visual Studio 2010\Projects\MvcApplication2\MvcApplication2\bin\ MvcApplication2.dll" #> "

我收到以下错误:

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

我的错在哪里??谢谢

4

1 回答 1

1

我发现了问题。

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

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

关于第二个错误:正如我之前所说,如果 tt fie 无法生成,这将被视为错误并且应用程序未编译,您所做的所有更改均未保存,因此它表示某些类型/方法无法找不到(它们只是在 dll 中不存在)

解决方案:按照解决方案进行。

- -但 - -

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

解决方案:使用 T4Toolbox 并更改

<#@ assembly name="$(SolutionDir)\MvcApplication2\bin\MvcApplication2.dll" #>

<#@ VolatileAssembly processor="T4Toolbox.VolatileAssemblyProcessor" name="$(SolutionDir)\MvcApplication2\bin\MvcApplication2.Dll" #>

您可以在此处阅读文章并在 GEORGE MATHEW 的网站上下载工具箱

于 2011-01-18T11:52:29.757 回答