Visual Studio 2022 用.net 5.0 创建T4模板 遇到的两个问题 (未能加载文件或程序集“EnvDTE 、未标记为可序列化)

博客作者在VisualStudio2022中使用.NET5.0创建T4模板时遇到了两个问题:1. EnvDTE程序集加载失败,通过将引用改为Microsoft.VisualStudio.Interop解决;2. 类型OAProjectItem未标记为可序列化,通过将获取DTE的方式更改为GetCOMService解决。作者分享了解决方案并希望对他人有所帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Visual Studio 2022 用.net 5.0 创建T4模板 遇到的两个问题

Visual Studio 2022 用.net 5.0 创建T4模板 遇到的两个问题

安装了Visual Studio 2022 用.net 5.0 创建了项目,项目中的T4模板报错

1.未能加载文件或程序集“EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件

在这里插入图片描述

解决方案:<#@ assembly name=“EnvDTE”#> 修改成
<#@ assembly name=“Microsoft.VisualStudio.Interop”#>

借鉴:https://cloud.tencent.com/developer/ask/sof/411286

2.正在运行转换: System.Runtime.Serialization.SerializationException: 程序集“Microsoft.VisualStudio.ProjectSystem.VS.Implementation, Version=17.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”中的类型“Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProjectItem”未标记为可序列化。

解决方案:

  找到这一行
  EnvDTE.DTE dte = (EnvDTE.DTE)hostServiceProvider.GetService(typeof(EnvDTE.DTE));
修改成:
EnvDTE.DTE dte = (EnvDTE.DTE)hostServiceProvider.GetCOMService(typeof(EnvDTE.DTE));

借鉴:https://qa.1r1g.com/sf/ask/2870036711/

自己记录一下,希望对其他人也有帮助

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值