Teejay
Teejay

Reputation: 7501

Cannot transform T4 templates on VS2017

I've been able to transform T4 templates, both on VS2015 and VS2017, until I replaced my failing computer and installed only VS2017 on the new device.

I always get the error:

Severity Code Description Project File Line Suppression State Error An exception was thrown while trying to compile the transformation code. The following Exception was thrown: System.IO.FileNotFoundException: Could not find file 'C:\WINDOWS\system32\Microsoft.VisualStudio.Shell'. File name: 'C:\WINDOWS\system32\Microsoft.VisualStudio.Shell' 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, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at Roslyn.Utilities.FileUtilities.OpenFileStream(String path) at Microsoft.CodeAnalysis.MetadataReference.CreateFromFile(String path, MetadataReferenceProperties properties, DocumentationProvider documentation) at Microsoft.VisualStudio.TextTemplating.CompilerBridge.<>c.<.ctor>b__15_0(String x) at System.Linq.Enumerable.WhereSelectListIterator2.MoveNext() at System.Linq.Enumerable.<UnionIterator>d__671.MoveNext() at System.Linq.Enumerable.d__671.MoveNext() at System.Linq.Buffer1..ctor(IEnumerable1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable1 source) at System.Collections.Immutable.ImmutableArray.CreateRange[T](IEnumerable1 items) at Microsoft.CodeAnalysis.ImmutableArrayExtensions.AsImmutableOrEmpty[T](IEnumerable1 items) at Microsoft.CodeAnalysis.Compilation.ValidateReferences[T](IEnumerable1 references) at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.WithReferences(IEnumerable1 references) at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CommonWithReferences(IEnumerable1 newReferences) at Microsoft.VisualStudio.TextTemplating.CompilerBridge.PrepareNewCompilation() at Microsoft.VisualStudio.TextTemplating.CompilerBridge.Compile() at Microsoft.VisualStudio.TextTemplating.TransformationRunner.Compile(String source, String inputFile, IEnumerable1 references, Boolean debug, SupportedLanguage language, String compilerOptions) 1

I've the "Text Template Transformation" enabled in Visual Studio installer.

I tried copying the DLL from C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PublicAssemblies to system32 with no luck.

I also tried registering the DLL with gacutil -i with no luck.

Any ideas?

Upvotes: 1

Views: 5294

Answers (1)

Teejay
Teejay

Reputation: 7501

It turned out that one of my templates was referencing Microsoft.VisualStudio.Shell.

But VS2017 only ships with a newer version called Microsoft.VisualStudio.Shell.15.0.

After changing the reference in the .tt the issue went away.

Upvotes: 3

Related Questions