Не удается преобразовать шаблоны T4 на VS2017 - PullRequest
0 голосов
/ 26 июня 2018

Мне удалось преобразовать шаблоны T4, как на VS2015, так и на VS2017, пока я не заменил неисправный компьютер и не установил только VS2017 на новое устройство.

Я всегда получаю ошибку:

Код серьезности Описание Состояние подавления строки файла проекта Ошибка Возникла исключительная ситуация при попытке скомпилировать код преобразования. Было выдано следующее исключение: System.IO.FileNotFoundException: не удалось найти файл 'C: \ WINDOWS \ system32 \ Microsoft.VisualStudio.Shell'. Имя файла: «C: \ WINDOWS \ system32 \ Microsoft.VisualStudio.Shell» в System.IO .__ Error.WinIOError (Int32 errorCode, String MaybeFullPath) at System.IO.FileStream.Init (Путь к строке, режим FileMode, доступ к FileAccess, права Int32, логическое значение useRights, общий ресурс FileShare, параметры типа3232 bufferSize, параметры FileOptions, SECURITY_ATTRIBUTES secAttrs, строка String msgPath, логическое значение bFromProxy, логическое значение useLongPath, Boolele), Boolele) в System.IO.FileStream..ctor (путь строки, режим FileMode, доступ к FileAccess, общий доступ к FileShare) в Roslyn.Utilities.FileUtilities.OpenFileStream (String path) в Microsoft.CodeAnalysis.MetadataReference.CreateFromFile (путь строки, свойства MetadataReferenceProperties, документация DocumentationProvider) в Microsoft.VisualStudio.TextTemplating.CompilerBridge. <> c. <. ctor> b__15_0 (строка x) в System.Linq.Enumerable.WhereSelectListIterator 2.MoveNext() at System.Linq.Enumerable.<UnionIterator>d__67 1.MoveNext () в System.Linq.Enumerable.d__67 1.MoveNext() at System.Linq.Buffer 1..ctor (источник IEnumerable 1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable 1) в System.Collections.Immutable.ImmutableArray.CreateRange [T] (IEnumerable 1 items) at Microsoft.CodeAnalysis.ImmutableArrayExtensions.AsImmutableOrEmpty[T](IEnumerable 1 элементов) в Microsoft.CodeAnalysis.Compilation.ValidateReferences [T] (IEnumerable 1 references) at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.WithReferences(IEnumerable 1 ссылок) в Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CommonWithReferences (ссылки IEnumerable 1 newReferences) at Microsoft.VisualStudio.TextTemplating.CompilerBridge.PrepareNewCompilation() at Microsoft.VisualStudio.TextTemplating.CompilerBridge.Compile() at Microsoft.VisualStudio.TextTemplating.TransformationRunner.Compile(String source, String inputFile, IEnumerable 1, логическая отладка, язык SupportedLanguage, String compilerOptions) 1

У меня включено «Преобразование текстовых шаблонов» в установщике Visual Studio.

Я безуспешно пытался скопировать DLL из C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PublicAssemblies в system32.

Я также безуспешно пытался зарегистрировать DLL с gacutil -i.

Есть идеи?

1 Ответ

0 голосов
/ 26 июня 2018

Оказалось, что один из моих шаблонов ссылался на Microsoft.VisualStudio.Shell.

Но VS2017 поставляется только с более новой версией под названием Microsoft.VisualStudio.Shell.15.0.

После изменения ссылки в .tt проблема ушла.

...