T4命名空间不能直接包含诸如字段或方法之类的元素

时间:2013-06-06 06:27:52

标签: c# t4

您好我刚刚开始使用T4模板,我需要根据控制器中的操作生成一个javascript文件。

我得到的代码都想通了忘记控制器和操作我唯一的问题是我在T4模板文件中收到此错误而且我不理解它:

  

编译转换:命名空间不能直接包含字段或方法等成员

这是我的代码:

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="$(TargetPath)" #>

<#@ import namespace="System.Reflection" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="eConnect.WebApi.Helpers.T4.ControllerDetails" #>
<#@ import namespace="System.Web.Http;"#>
<#@ output extension=".js" #>

define(['services/logger', 
        'services/jsonDataService', 
        'services/config', 
        'services/cachingService'],
        function (logger, jsonDataService, config, cache) {
            var dataService = { };
            return dataService;
        });

<#
    var controllers = ControllersInfo.GetControllers();
    foreach(var controller in controllers) {
        Dictionary<string, ParameterInfo[]> actions = ControllersInfo.GetAllCustomActionsInController(controller, new HttpGetAttribute());
    }
#>

还有一个外部类可以获取控制器和操作,但我认为这不是当前问题的必要条件。

我做错了什么?

1 个答案:

答案 0 :(得分:6)

你现在可能已经弄明白了,但是:

<#@ import namespace="System.Web.Http;"#>

注意';'

而是写:

<#@ import namespace="System.Web.Http"#>