Access911.net   |   a9BBS   |   OTaA System  
  搜索文章:  
Access911欢迎您光临  
   主页      上传      繁體版       论坛     
设为首页  |  加入收藏   
  
你现在的位置:文章索引 -> 文章分类 ->  
 首页|  近日更新|  下载  |  文章索引  |  搜索|  术语|  承接工程|  
 
系统正在加载内容,请耐心等待...
 
 查询
 窗体
 报表
 
 
 VBA
 函数
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 发布
 OA
 ASP/ASP.NET
 其他语言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用软件
 参考文档
 业主作品
 网友大作
 
 
友情链接
 access911.net
 
访问人次
 1701842
 
站长 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 订阅

显示附加信息 >>>

关于VS2010 T4 TT 模板的摘录

作者:cg1  摘自:access911.net  :cg1  更新日期:2012-10-26  浏览人次:

 

T4 模板中无法直接调用当前库中的其他类,因为.tt文件打开debug="true"后查看自动转成的.cs文件时发现其 namespace 不是当前项目我自己定义的namespece,而是微软。

提示我名称空间未找到。我已经在一开始用 import namespace="当前项目的名称空间" 了,但是我开了调试以后发现 T4 的名称空间是动态生成的


TT模板是这样写的:
<#@ template debug="true" hostspecific="false" language="C#" #>
<#@ import namespace="WindowsFormsApplication1" #>
<#@ output extension=".txt" #>

调试的时候发现动态生成的 .cs 文件是

namespace Microsoft.VisualStudio.TextTemplating1E5AFE334F2E0CED93E2A9B59C11B417
{
    using WindowsFormsApplication1;
    using System;


http://connect.microsoft.com/VisualStudio/feedback/details/532051/t4-template-cant-reference-local-project-assembly


类型:  错误  
代码:  532051  
打开日期:  2010/2/8 14:01:09  
访问限制:  公开  
       
When a T4 Template (.tt) is added to a project, it can not import/reference the local project/assembly.

If the T4 Template is added to another project in the same solution, and tries to reference another local project/assembly, this problem still exists.  

详细信息 (展开) Product Language
EnglishVersion
Visual Studio 2010 Beta 2Operating System
Windows XP
Operating System Language

EnglishSteps to Reproduce
1. Create a new Class Library project
2. Create a Class1 class
3. Add a T4 Template to the project.
4. Reference the Class1 class in the T4 template file (in dynamic code within file, not static output) and the template will not be able to generate output.Actual Results
T4 Template does not generate code.Expected Results
T4 Template should generate code.      You can indicate your satisfaction with how Microsoft handled this issue by completing this quick 3 question survey. [Details] 
 

------------------------------------------------

由 Microsoft 在 2010/5/17 14:40 发送 
Supporting assemblies should work just fine, so long as you build them before running the templates.

However, placing template code in the same project as the template itself is not supported, as you'd need to build the proejct containing the template output before running the templates, before building the project (and so on in an infinite loop) 


------------------------------------------------
由 bluevoodoo1 在 2010/3/5 7:35 发送 
Are there any workarounds for this? Generating template files without use of supporting assemblies makes T4 templates seemingly difficult to work with when dealing with dynamic, or content from databases (think entity/OR mapping). Using reflection to access types in an assembly is less than optimal. 


------------------------------------------------
由 Microsoft 在 2010/2/9 9:39 发送 
Thank you for your feedback concerning not being able to reference local project types in code blocks of T4 templates. Unfortunately this is a design limitation; one cannot use the types defined in the project owning the template at design (transform) time because this would require that the assembly be built before its content is completely defined. In other words code blocks in a text template cannot reference types defined in the same project.


 

 
相关文章
     没有手动相关文章
 
评论
     查看或发表更多的评论,请单击这里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期:2000年4月2日  |  设计施工:陈格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陈格 保留所有权利