.net - 如何在VS2010中指定T4(文本模板)以使用C#4.0?

标签 .net c#-4.0 t4 visual-studio-2010 texttemplate

我需要指定我的T4以使用C#4.0来渲染我的tt文件吗?我尝试使用

<#@ template language="C#v4.0" debug="true" #>

但是当我使用动态变量时,像这样
dynamic x=10;
Write(x.ToString());

我遇到这些错误
Error   2   Compiling transformation: Predefined type 'Microsoft.CSharp.RuntimeBinder.CSharpSetMemberBinder' is not defined or imported e:\projects\DynamicModel\DynamicModel\ModelGenerator.tt 1   1   
Error   3   Compiling transformation: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder..ctor'  e:\projects\DynamicModel\DynamicModel\ModelGenerator.tt 1   1   
Error   4   Compiling transformation: Missing compiler required member 'System.Runtime.CompilerServices.CallSite.Create'    e:\projects\DynamicModel\DynamicModel\ModelGenerator.tt 1   1   
Error   5   Compiling transformation: One or more types required to compile a dynamic expression cannot be found. Are you missing references to Microsoft.CSharp.dll and System.Core.dll?   e:\Projects\DynamicModel\DynamicModel\ModelGenerator.tt 7   8   
Error   6   A namespace cannot directly contain members such as fields or methods   e:\projects\DynamicModel\DynamicModel\ModelGenerator.cs 1   1   DynamicModel

另外,请注意,我使用的是TextTemplatingFileGenerator和,而不是预处理程序模板

最佳答案

发现您还应该指定正确的程序集。

添加此选项可确保您使用的是C#4.0。

<#@ template language="C#" debug="true" #>
<#@ output extension=".txt" #>
<#@ Assembly Name="System.Core, Version=4.0.0.0, Culture=neutral" #>
<#@ Assembly Name="Microsoft.CSharp, Version=4.0.0.0, Culture=neutral" #>

然而,出于某种原因,在t4转换期间,动态分配仍然无法从T4开始工作,想知道为什么。从T4开始,它将引发运行时错误,同一代码直接从cs文件中可以正常运行。

关于.net - 如何在VS2010中指定T4(文本模板)以使用C#4.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1531165/

相关文章:

c# - asp.net mvc 5 t4 脚手架

asp.net - 找不到 MvcTextTemplateHost

C# 打开 DBF 文件

c# - 读取 C# 中的 JS 变量/将 JS 变量转发到 visual studio 性能测试?

node.js - nodejs 文件系统与 .net System.IO 的性能对比?

wcf - 我的 ServiceHost 中的内存和处理泄漏

c# - 参数中的数据值正在被复制到其他参数 c++、c#

c# - 在 C#.NET 中动态创建日志文件和更新状态

c# - 如何防止 ListBox.SelectedIndexChanged 事件?

c# - 创建 T4 生成类型的泛型 List<T>