在vs2017中运行自定义工具时出现T4错误



当我想从vs2017运行以下命令"run Cosutom Tool"时,我确实遇到了问题。

它在VS更新后停止工作。

而不是运行T4并生成与该文件相关的所有代码。输出文件将包含以下错误消息:

键入'Microsoft.VisualStudio.Data.Tools.Package.Interface.OAFileItem'在Assembly的Microsoft.VisualStudio.Data.Tools.Package中,版本=15.1.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'为未标记为可序列化。

完整错误消息:

严重性代码描述项目文件行禁止显示状态运行转换时出错:System.Runtime.Serialization.Serialization异常:类型中的"Microsoft.VisualStudio.Data.Tools.Package.Interface.OAFileItem"程序集的Microsoft.VisualStudio.Data.Tools.Package,版本=15.1.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'未标记为可序列化。

服务器堆栈跟踪:位于System.Runtime.Serialization.FormatterServices.InteralGetSerializableMembers(RuntimeType类型(System.Runtime.Serialization.FormatterServices。<>c__DisplayClass9_0.b_0(成员持有者_)位于System.Collections.Concurrent.CurrentDictionary2.GetOrAdd(TKey key, Func2 valueFactory(System.Runtime.Serialization.FormatterServices.GetSerializableMembers(类型类型,StreamingContext上下文(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo((在System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(对象obj,ISurrogateSelector代理选择器,StreamingContext上下文,SerObjectInfoInit-SerObjectInfoInit、IFormatterConverter转换器,ObjectWriter ObjectWriter,SerializationBinder绑定器(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(对象obj,ISurrogateSelector代理选择器,StreamingContext上下文,SerObjectInfoInit-SerObjectInfoInit、IFormatterConverter转换器,ObjectWriter ObjectWriter,SerializationBinder绑定器(System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(对象graph,Header[]inHeaders,__BinaryWriter serWriter,布尔值fCheck(
位于System.Runtime.Serialization.Formatters.BinaryFormatter.Serialize(流serializationStream、对象图、Header[]头、布尔值fCheck(
System.Runtime.Remoting.Channels.CrossAppDomainSerializer.SerializeMessageParts(ArrayListargsToSerialize(System.Runtime.Remoting.Messageing.走私MethodReturnMessage..ctor(IMethodReturnMessagemrm(System.Runtime.Remoting.Messaging。走私方法返回消息。走私可能(IMessagemsg(在System.Runtime.Remoting.Channels.CrossAppDomainSink.DoDispatch(Byte[]reqStmBuff,走私方法调用消息走私Mcm,走私方法返回消息&走私Mrm(System.Runtime.Remoting.Channels.CrossAppDomainSink.DoTransitionDispatchCallback(Object[]args(

在[0]处重新引发异常:在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessagereqMsg、IMessage retMsg(System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32类型(_Solution.FindProjectItem(字符串FileName(Microsoft.VisualStudio.TextTemplateing6FCAD03755FEA2CF76F6900C72CACC8E11DA213696664770DDB2AE835D7A8E82309989CCBC13688F6AC52D362D892E524A6D1554F901D313ED8AA1C0920ED56C.GeneratedTextTransformation.Manager.VSManager.ctor(ITextTemplateEngineHost主机,StringBuilder模板(Microsoft.VisualStudio.TextTemplateing6FCAD03755FEA2CF76F6900C72CACC8E11DA213696664770DDB2AE835D7A8E82309989CBC13688F6AC52D362D892E524A6D1554F901D313ED8AA1C0920ED56C.GeneratedTextTransformation.Manager.Create(ITextTemplateEngineHost主机,StringBuilder模板(Microsoft.VisualStudio.TextTemplateing6FCAD03755FEA2CF76F6900C72CACC8E11DA213696664770DDB2AE835D7A8E82309989CCB13688F6AC52D362D892E524A6D1554F901D313ED8AA1C0920ED56C.GeneratedTextTransformation.TransformText((暂存D:\XXXXXXX\MedatadataGeneratedObjects.tt 1

在我的T4中,我使用var dte = (DTE) hostServiceProvider.GetService(typeof(DTE));,我切换为使用var dte = (DTE) hostServiceProvider.GetCOMService(typeof(DTE));

最新更新