如何配置SDK风格C#项目实现EDMX保存时自动生成类
解决SDK风格C#项目中EDMX保存后自动触发T4模板生成的问题
Visual Studio 2022对SDK风格C#项目确实没有原生支持EDMX文件保存后自动运行关联T4模板的功能,不过可以通过以下两种方案实现需求:
方案一:修改项目文件添加自定义构建目标
在项目的.csproj文件中添加自定义构建目标,监听EDMX文件的变化,在构建时自动触发TT模板的生成工具。将以下代码添加到<Project>标签内:
<Target Name="AutoRunT4OnEdmxChange" BeforeTargets="BeforeBuild"> <!-- 匹配项目中所有EDMX文件 --> <ItemGroup> <EdmxFiles Include="**/*.edmx" /> <!-- 关联对应的TT模板文件 --> <TtFiles Include="%(EdmxFiles.Directory)%(EdmxFiles.Filename).tt" /> <TtFiles Include="%(EdmxFiles.Directory)%(EdmxFiles.Filename).Context.tt" /> </ItemGroup> <!-- 调用VS的命令行工具运行T4生成器 --> <Exec Command=""$(DevEnvDir)devenv.com" "$(ProjectPath)" /runtool:TextTemplatingFileGenerator "@(TtFiles)"" /> </Target>
说明:
- 这个目标会在项目构建前执行,自动遍历所有EDMX文件并运行对应的实体、上下文TT模板。
- 无需额外安装工具,团队成员同步项目文件即可生效,但触发时机为构建阶段,而非EDMX保存的瞬间。
方案二:使用Visual Studio扩展实现实时触发
安装支持自动触发T4模板的VS扩展,比如Auto T4或T4 Toolbox,这类扩展可以监听文件保存事件,当EDMX文件被修改保存后,自动执行TT模板的Run custom tool操作。
说明:
- 可以实现EDMX保存后立即生成代码的实时效果,但需要团队所有成员的Visual Studio都安装对应扩展,确保开发环境一致。
内容的提问来源于stack exchange,提问作者user221592
相关产品推荐
相关产品推荐

