无法在VS2017上转换T4模板

时间:2018-06-26 14:56:10

标签: c# visual-studio-2017 t4

我已经能够在VS2015和VS2017上转换T4模板,直到我更换故障计算机并在新设备上安装 为止。

>

我总是会收到错误:

  

严重性代码描述项目文件行抑制状态   错误尝试编译转换代码时引发了异常。引发了以下异常:   System.IO.FileNotFoundException:找不到文件'C:\ WINDOWS \ system32 \ Microsoft.VisualStudio.Shell'。   文件名:“ C:\ WINDOWS \ system32 \ Microsoft.VisualStudio.Shell”      在System.IO .__ Error.WinIOError(Int32 errorCode,可能是StringFullPath)      在System.IO.FileStream.Init(字符串路径,FileMode模式,FileAccess访问,Int32权限,布尔useRights,FileShare共享,Int32 bufferSize,FileOptions选项,SECURITY_ATTRIBUTES secAttrs,字符串msgPath,布尔bFromProxy,布尔useLongPath,布尔checkHost)      在System.IO.FileStream..ctor处(字符串路径,FileMode模式,FileAccess访问,FileShare共享)      在Roslyn.Utilities.FileUtilities.OpenFileStream(字符串路径)      在Microsoft.CodeAnalysis.MetadataReference.CreateFromFile(字符串路径,MetadataReferenceProperties属性,DocumentationProvider文档)      在Microsoft.VisualStudio.TextTemplating.CompilerBridge。<> c。<。ctor> b__15_0(String 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语言,字符串编译器选项)1

我已经在Visual Studio安装程序中启用了“文本模板转换”。

我没有运气就试图将DLL从C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PublicAssemblies复制到system32

我也尝试用gacutil -i注册DLL,但是没有运气。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

原来,我的模板之一是引用Microsoft.VisualStudio.Shell

但是VS2017仅随附名为Microsoft.VisualStudio.Shell.15.0的较新版本。

在.tt中更改引用后,问题消失了。