EF.Utility.CS.ttinclude и MSBuild - PullRequest
       38

EF.Utility.CS.ttinclude и MSBuild

2 голосов
/ 30 августа 2011

У меня проблемы с получением сценария MSBuild преобразования файла .tt, который ссылается на EF.Utility.CS.ttinclude.

Если я запускаю генерацию из VS2010, она работает нормально, но когда я запускаю свой собственный скрипт сборки через командную строку, я получаю.

 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.

Если я ссылаюсь на абсолютный путь для EF.Utility.CS.ttinclude, я получаю:

  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 ]

2 голосов
/ 09 июня 2017

Вкратце: добавьте флаг -I в TextTransform.exe для решения этой проблемы следующим образом:

Шаг 1: Создайте отображение переменной среды в EF6 вашего TextTransform. Включите так:enter image description here

, которая создаст переменную VS140COMNTXTTRANSFORM , которую Windows понимает

Шаг 2: Включить -I флаг в команде TextTransform.exe примерно так:

TextTransform.exe -I "%VS140COMNTXTTRANSFORM%" -out filename.tt
0 голосов
/ 06 мая 2012

Похоже, что шаблон, в котором вы работали, myttFile.tt не удалось вывести что-либо в результате выполнения шаблона. TransformText ();

Не могу много сказать, не понимая, какая логика находится внутри myttFile..tt.

Visual Studio 11, если вы

установили <# template debug = true #>

и добавили System.Diagnostics.Debugger.Launch ();в разделе кода вашего шаблона VS 11 запустит отладчик, и вы сможете отладить свой t4.

извините, только что меня осенило.Скорее всего, ваш шаблон зависит от визуальной студии в качестве хоста.где-то в ваших шаблонах у вас есть hostspecific = true.

<# @ template hostspecific = "true" language = "C #" #>

...