.Net 6.0项目中的VS2022 T4 EF6模板突然抛出序列化异常

Mik*_*e S 5 c# t4 entity-framework-6

我有一个 .Net 6.0 应用程序(在 VS2019 中以 .Net 5.0 开始)。我使用 EF Core 进行数据访问。我们较旧的应用程序是.Net 4.8,我们有很多 T4 模板,用于生成基于 EDMX (EF6) 的服务类和模型类。在 .Net 6.0 应用程序中,我决定继续使用这些模板(稍作修改),因此我在解决方案中创建了一个 .Net Framework 项目,并添加了一个保存数据库信息的 EDMX。然后在不同的项目(服务项目或模型项目)中,我有 t4 模板来读取 EDMX 并根据数据库生成代码文件。

这些 T4 模板在 VS2019 中完美运行,我相信在 VS2022 中曾经可以运行(不能 100% 确定这一点),但是在最近更改数据库后,我尝试运行这些模板,但每次都开始看到此错误:

运行转换:System.Runtime.Serialization.SerializationException:在程序集“Microsoft.VisualStudio.ProjectSystem.VS.Implementation”中键入“Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProjectItem”,版本= 17.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a' 未标记为可序列化。

错误指向 EF6.Utility.CS.ttinclude 文件中的这一行:

templateProjectItem = dte.Solution.FindProjectItem(_textTransformation.Host.TemplateFile);
Run Code Online (Sandbox Code Playgroud)

如果我的 T4 模板位于 .Net Framework 项目中,它们可以正常工作,但 .Net 6.0 项目中的任何 T4 模板都会发生此错误。

有几件事:如果我调试 T4 模板而不是运行自定义工具,我就可以运行它们。另外,由于引发错误的代码位于每次 VS 更新时随实体框架工具安装的 EF6.Utility.CS.ttinclude 中,因此我无法对该文件进行任何更改。

Mik*_*e S 0

此问题现在似乎已在 VS 17.3.0 中得到解决