簡體   English   中英

如何使T4對象在ASP.NET ASHX IHttpHandler中可用

[英]How to make T4 object available in ASP.NET ASHX IHttpHandler

上下文:Visual Studio 2015社區; C#; ASP.NET ASHX處理程序; .NET 4.5.1

我正在維護較舊的ASHX代碼,並希望通過使其生成一些JavaScript代碼來對其進行擴展。

我在VS2015中創建了一個網站項目,並成功添加了原始ASHX代碼。

ASHX文件的序言非常標准:

<%@ WebHandler Language="C#" Class="Handler" %>
<%@ Assembly Name="Microsoft.JScript, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %>

using System.Web;
using System.IO;
using Microsoft.JScript;
using System.Data;
using System.Data.SqlClient;
using System.Web.Script.Serialization;
using System.Collections.Generic;

public class Handler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {

從模板的使用可以看出,盡管發生的不僅僅是模板。

因此,我向項目添加了運行時文本模板。 在其頂部,我放置了以下內容:

<#@ template language="C#" debug="true" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ parameter name="JSON" Type="System.Collections.Generic.Dictionary<string,object>" #>

因此,我已將模板稱為“ QMGenerator.tt”,現在我正嘗試在ASHX主體中創建其實例。 這就是問題出現的地方……這是不可見的。

在QMGenerator.tt生成的.cs文件中,有一行

public partial class QMGenerator : QMGeneratorBase

我本以為可以使QMGenerator對Intellisense可見,並可以執行類似的操作

QMGenerator qmg = new QMGenerator();

文件及類似地點而定。

現在,我的確知道ASHX已被取代,並且在必要時會沿線使用。 我只是想呆在(最初)工作的地方。 但是,從短期來看,我如何連接到運行時模板?

它不可見

在代碼中顯示:

public partial class QMGenerator : QMGeneratorBase
  • 您忽略QMGenerator.cs文件中生成的名稱空間以包裝此類。

您可以在C#代碼中對此名稱空間使用“ using”指令,以使QMGenerator類可見。

如何連接到運行時模板?

您可以將任何內容添加到T4模板中。 首先-您具有<#+#>添加其他代碼,其次-您具有Partial類-在適合您的位置編寫了該類的另一部分。

關於引用QMGenerator.cs。 它是在保存時從QMGenerator.tt生成的,但沒有為運行時模板翻譯QMGenerator.cs。 您至少需要一個成功的庫構建庫,QMGenerator.tt可以在該庫中可見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM