2011-08-30 4 views
1

내 MSBuild 스크립트에서 EF.Utility.CS.ttinclude를 참조하는 .tt 파일을 변환하는 데 문제가 있습니다.EF.Utility.CS.ttinclude 및 MSBuild

VS2010에서 생성을 실행하면 정상적으로 작동하지만 커맨드 라인을 통해 사용자 정의 빌드 스크립트를 실행할 때 얻을 수 있습니다. 나는 EF.Utility.CS.ttinclude에 대한 절대 경로를 참조하는 경우

TextTransform "C:\SourceControl\SVN\PathToFile\myttFile.tt" 
C:\SourceControl\SVN\PathToFile\myttFile.tt(9,4): error : There was an error loading the include file 'EF.Utility.CS.ttinclude'. The transformation will not be run. The following Exception was thrown: [C:\SourceControl\SVN\PathToBuildScript\build.xml] 
    System.IO.FileNotFoundException: Could not find file 'C:\SourceControl\SVN\PathToFile\EF.Utility.CS.ttinclude'. 
    File name: 'C:\SourceControl\SVN\PathToFile\EF.Utility.CS.ttinclude' 
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath) 
    at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 
    at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize) 
    at System.IO.StreamReader..ctor(String path) 
    at Microsoft.VisualStudio.TextTemplating.CommandLine.CommandLineHost.ReadFileContent(String fileName) 
    at Microsoft.VisualStudio.TextTemplating.CommandLine.CommandLineHost.LoadIncludeText(String requestFileName, String& content, String& location) 
    at Microsoft.VisualStudio.TextTemplating.Engine.ProcessIncludeDirective(Directive directive, ITextTemplatingEngineHost host) 
C:\SourceControl\SVN\PathToBuildScript\build.xml(30,5): error MSB3073: The command "TextTransform "C:\SourceControl\SVN\PathToFile\myttFile.tt"" exited with code 1. 

, 내가 얻을 :

TextTransform "C:\SourceControl\SVN\PathToFile\myttFile.tt" 
EXEC : error : An expression block evaluated as Null [C:\SourceControl\SVN\PathToBuildFile\build.xml] 
    at Microsoft.VisualStudio.TextTemplating.ToStringHelper.ToStringWithCulture(Object objectToConvert) 
    at Microsoft.VisualStudio.TextTemplatinga265b58e2b114039856ebd504775f376.GeneratedTextTransformation.TransformText() in c:\SourceControl\SVN\PathToFile\myttFile.tt:line 77 
    at Microsoft.VisualStudio.TextTemplating.TransformationRunner.RunTransformation(TemplateProcessingSession session, String source, ITextTemplatingEngineHost host, String& result) 
C:\SourceControl\SVN\PathToBuildFile\build.xml(30,5): error MSB3073: The command "TextTransform "C:\SourceControl\SVN\PathToFile\myttFile.tt"" exited with code 1. 

이 어떤 도움이 될 것이다 큰 :)

+2

당신이 -I 스위치 texttransform.exe를 호출하는 시도가 있고, EF.Utility.CS.ttinclude의 경로? 경로는 가능성이 높습니다 : C : \ 프로그램 파일 \의 Microsoft Visual Studio 10.0 \ Common7 \ IDE \ 확장 \ 마이크로 소프트 \ 엔티티 프레임 워크 도구 템플릿 \이 포함 \ \ 또는 C : \의 Program Files (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Entity Framework Tools \ Templates \ Includes \ – Mir

답변

0

는 템플릿이 있다고 나타납니다 실행중인 템플릿의 결과로 myttFile.tt를 실행하면 아무것도 출력되지 않았습니다. TransformText();

로직이 myttFile.tt 내부에 없으면 실제로 말할 수 없습니다.

당신이

이 < # 템플릿 디버그 = 사실 #>

및 추가 System.Diagnostics.Debugger.Launch을 설정하면 비주얼 스튜디오 11(); 템플릿의 코드 섹션에 을 입력하면 VS 11에서 디버거를 실행하고 t4를 디버깅 할 수 있습니다.

죄송합니다. 템플릿이 호스트 인 Visual Studio에 종속되어있을 가능성이 있습니다. 템플릿 어딘가에 hostspecific = true가 있습니다.

< # @ 템플릿 hostspecific = "진정한"언어 = "C#을"#>

한마디로
1

: 그래서 같이이 문제를 해결하기 위해 TextTransform.exe에 -I 플래그를 추가

단계 1 : enter image description here

변수 VS140COMNTXTTRANSFORM을 만듭니다 일 : 은과 같이 포함하여 TextTransform의 EF6에 환경 변수 매핑 만들기 그래서 같은 TextTransform.exe 명령 -I 플래그를 포함 : 윈도우

2 단계 이해에

TextTransform.exe -I "%VS140COMNTXTTRANSFORM%" -out filename.tt 
+0

다른 솔루션이 작동하지 않는 동안 저에게 효과적입니다. – RezaRahmati