是否存在无需构建即可启动Roslyn源代码生成器的dotnet/msbuild CLI命令?
仅运行Roslyn源代码生成器而不触发完整构建的方法
可以通过MSBuild的特定目标单独执行源代码生成器,无需触发完整构建流程,以下是可行的命令:
通用命令
直接调用GenerateCode目标,同时跳过项目依赖构建:
dotnet msbuild /t:GenerateCode /p:BuildProjectReferences=false
若要指定具体项目文件:
dotnet msbuild YourProject.csproj /t:GenerateCode /p:BuildProjectReferences=false
备选方案(设计时生成场景)
使用CompileDesignTime目标并跳过编译器执行,仅保留生成器运行环节:
dotnet msbuild /t:CompileDesignTime /p:SkipCompilerExecution=true
命令说明
/t:GenerateCode:触发项目中所有Roslyn源代码生成器执行,生成对应的源代码文件。/p:BuildProjectReferences=false:禁止构建项目依赖项,减少不必要的操作开销。/t:CompileDesignTime:执行设计时编译逻辑,这一过程默认会运行源代码生成器;搭配SkipCompilerExecution=true可跳过实际代码编译,只运行生成器。
注意事项
- 不同项目类型(如类库、Web项目)的MSBuild目标可能存在差异,如果
GenerateCode目标不生效,可以通过dotnet msbuild /pp预处理项目文件,搜索与源代码生成相关的目标名称。 - 生成的源代码默认存储在项目的
obj目录下,具体路径会根据项目框架版本、配置(Debug/Release)有所不同,例如obj/Debug/net8.0/generated。 - 如果生成器依赖特定构建配置属性,需在命令中额外指定,比如
/p:Configuration=Release来匹配发布模式配置。
内容的提问来源于stack exchange,提问作者Spoomer
相关产品推荐
相关产品推荐

