我需要指定我的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/