2009-10-07 4 views
5

내 tt 파일을 렌더링하기 위해 C# 4.0을 사용하려면 T4를 지정해야합니까? 나는VS2010에서 C# 4.0을 사용하기 위해 T4 (텍스트 템플릿)을 어떻게 지정합니까?

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

를 사용하여 시도하지만이

dynamic x=10; 
Write(x.ToString()); 

같은 동적 변수를 사용할 때 나는 TextTemplatingFileGenerator를 사용하고 있음을 유의하시기 바랍니다 이러한 오류 또한

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 

받고 있어요 및 아니요 사전 처리기 템플릿

+0

VS2010과 함께 제공된 템플릿을 사용해 보셨습니까? – Lazarus

+0

그래, 당신이 동적 변수를 사용하지 않는 한 잘 간다 – amazedsaint

답변

4

올바른 어셈블리를 지정해야합니다.

이것을 추가하면 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 파일에서 직접적으로 좋은 결과를 얻습니다.

+0

미리 컴파일 된 T4를 사용해 보셨나요? http://www.olegsych.com/2009/09/t4-preprocessed-text-templates/ –

+0

사실 나는 그것을 얻었습니다. 감사합니다. – amazedsaint

+0

그리고 저는 VS에서 t4를 직접 실행하지 않고 사용자 정의 템플릿 호스트를 사용하고 있습니다. :) – amazedsaint

2

기본적으로 T4 엔진은 만 사용할 수 있습니다.은 4.0을 사용하지만 참조하는 모든 DLL이 오류에 맞는지 확인해야합니다.

관련 문제