From 7c0660c3161c1444848412efd493f35cb4b5e1d4 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Sat, 15 Aug 2026 00:19:10 -0700 Subject: [PATCH 1/2] Make template replacement incremental Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dc0484d6-320c-4c18-9839-70a7b13332f3 --- .../Aspire.ProjectTemplates.csproj | 93 +++-- .../ProjectTemplatesIncrementalBuildTests.cs | 360 ++++++++++++++++++ 2 files changed, 431 insertions(+), 22 deletions(-) create mode 100644 tests/Infrastructure.Tests/ProjectTemplates/ProjectTemplatesIncrementalBuildTests.cs diff --git a/src/Aspire.ProjectTemplates/Aspire.ProjectTemplates.csproj b/src/Aspire.ProjectTemplates/Aspire.ProjectTemplates.csproj index de1e7421ea1..ec0daa077b3 100644 --- a/src/Aspire.ProjectTemplates/Aspire.ProjectTemplates.csproj +++ b/src/Aspire.ProjectTemplates/Aspire.ProjectTemplates.csproj @@ -13,6 +13,8 @@ Aspire Template Pack for Microsoft Template Engine true true + <_TemplateSourceRoot Condition="'$(_TemplateSourceRoot)' == ''">$(MSBuildThisFileDirectory)templates\ + <_ReplaceTextScriptPath Condition="'$(_ReplaceTextScriptPath)' == ''">$(RepoRoot)tools\scripts\replace-text.cs @@ -21,12 +23,12 @@ - + - + content/templates/%(RecursiveDir) $(IntermediateOutputPath)content\templates\%(RecursiveDir)%(Filename)%(Extension) @@ -34,21 +36,21 @@ - + content/templates/%(RecursiveDir) $(IntermediateOutputPath)content\templates\%(RecursiveDir)%(Filename)%(Extension) - + content/templates/aspire-apphost-singlefile/%(RecursiveDir) $(IntermediateOutputPath)content\templates\aspire-apphost-singlefile\%(RecursiveDir)%(Filename)%(Extension) - + content/templates/%(RecursiveDir) @@ -61,13 +63,11 @@ AfterTargets="Build" DependsOnTargets="ReplacePackageVersionOnTemplates"> - + - - + <_VersionBase>$(PackageVersion.Split('-')[0]) @@ -75,15 +75,16 @@ $(_VersionBase.Split('.')[0]) $(_VersionBase.Split('.')[1]) $(VersionMajor).$(VersionMinor) - <_RspFilePath>$(IntermediateOutputPath)replace-text-args.rsp - <_ReplaceTextScriptPath>$(RepoRoot)tools/scripts/replace-text.cs + <_ReplaceTextRspFilePath>$(IntermediateOutputPath)replace-text-args.rsp + <_ReplaceTextStampPath>$(IntermediateOutputPath)replace-text.stamp - + + DestinationFile="$(IntermediateOutputPath)content\templates\%(RecursiveDir)%(Filename)%(Extension)" + PackagePath="content/templates/%(RecursiveDir)" /> @@ -126,31 +127,79 @@ <_RspLines Include="@(Replacements)" /> - - + + + <_ReplaceTextInputs Include="@(TemplateFiles);@(TemplateConfigFiles);@(TemplateProjectFiles);@(TemplateLocalizedStringsFiles);$(_ReplaceTextRspFilePath);$(_ReplaceTextScriptPath)" /> + + + + + + <_MissingReplaceTextSourceFiles Include="@(SourceFiles)" Condition="!Exists('%(Identity)')" /> + + + + + + + + + + + + + + + <_MissingReplaceTextSourceFilesAfterCopy Include="@(SourceFiles)" Condition="!Exists('%(Identity)')" /> + + + - + + Inputs="@(TemplateFiles)" + Outputs="@(TemplateFilesObj)"> - + + + + <_ReplaceTextRspFilePath>$(IntermediateOutputPath)replace-text-args.rsp + <_ReplaceTextStampPath>$(IntermediateOutputPath)replace-text.stamp + +