【发布时间】:2018-12-05 08:28:18
【问题描述】:
我已经能够在 VS2015 和 VS2017 上转换 T4 模板,直到我更换了故障计算机并仅在新设备上安装了 VS2017。 p>
我总是得到错误:
严重性代码描述项目文件行抑制状态 错误 尝试编译转换代码时引发异常。引发了以下异常: System.IO.FileNotFoundException:找不到文件“C:\WINDOWS\system32\Microsoft.VisualStudio.Shell”。 文件名:'C:\WINDOWS\system32\Microsoft.VisualStudio.Shell' 在 System.IO.__Error.WinIOError(Int32 错误代码,字符串可能全路径) 在 System.IO.FileStream.Init(字符串路径、FileMode 模式、FileAccess 访问、Int32 权限、Boolean useRights、FileShare 共享、Int32 bufferSize、FileOptions 选项、SECURITY_ATTRIBUTES secAttrs、String msgPath、Boolean bFromProxy、Boolean useLongPath、Boolean 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__671.MoveNext() 在 System.Linq.Enumerable.d__671.MoveNext() at System.Linq.Buffer1..ctor(IEnumerable1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable1 源) 在 System.Collections.Immutable.ImmutableArray.CreateRange[T](IEnumerable1 items) at Microsoft.CodeAnalysis.ImmutableArrayExtensions.AsImmutableOrEmpty[T](IEnumerable1 项) 在 Microsoft.CodeAnalysis.Compilation.ValidateReferences[T](IEnumerable1 references) at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.WithReferences(IEnumerable1 引用) 在 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 引用,布尔调试,SupportedLanguage 语言,String compilerOptions) 1
我在 Visual Studio 安装程序中启用了“文本模板转换”。
我尝试将 DLL 从 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PublicAssemblies 复制到 system32,但没有成功。
我还尝试使用gacutil -i 注册 DLL,但没有成功。
有什么想法吗?
【问题讨论】:
-
FileNotFoundException 可能会因缺少依赖项或静态对象的构造函数抛出而发生。首先是IMO更有可能。首先,使用例如sysinternals 进程监视器,它会告诉你哪个 DLL 没有找到。其次,运行带有调试器的命令行转换工具,该工具是
C:\Program Files (x86)\Common Files\microsoft shared\TextTemplating\14.0\TextTransform.exe,设置为在 C++ 和 SEH 异常时中断。
标签: c# visual-studio-2017 t4