Skip to content

Commit d892c51

Browse files
Fix internal package version detection for project templates (#6651)
1 parent 5d8efb6 commit d892c51

File tree

5 files changed

+65
-40
lines changed

5 files changed

+65
-40
lines changed

eng/MSBuild/Packaging.targets

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
<!-- https://learn.microsoft.com/dotnet/fundamentals/package-validation/overview -->
3838
<EnablePackageValidation>true</EnablePackageValidation>
3939

40-
<PackageValidationBaselineVersion Condition=" '$(Stage)' == 'normal' ">9.7.0</PackageValidationBaselineVersion>
40+
<PackageValidationBaselineVersion Condition=" '$(Stage)' == 'normal' ">9.7.0</PackageValidationBaselineVersion>
4141
</PropertyGroup>
4242

4343
<!-- Verify that the minimum supported TFM is actually used. -->
@@ -93,7 +93,7 @@
9393
!@(_PackageBuildFile->AnyHaveMetadataValue('PackagePathWithoutFilename', '$(_NETStandardCompatErrorPlaceholderFilePackagePath)'))" />
9494
</ItemGroup>
9595
</Target>
96-
96+
9797
<!-- Add the de-duped placeholder file to the package. -->
9898
<Target Name="_AddPlaceholderFileToNone"
9999
AfterTargets="_AddNETStandardCompatErrorFileForPackaging">
@@ -102,4 +102,15 @@
102102
</ItemGroup>
103103
</Target>
104104

105+
<!-- This target is used to get the package versions of projects. -->
106+
<Target Name="_GetPackageVersionInfo"
107+
Returns="@(_PackageVersionInfo)">
108+
<ItemGroup>
109+
<_PackageVersionInfo Include="$(MSBuildProjectFullPath)">
110+
<PackageVersion>$(PackageVersion)</PackageVersion>
111+
<PackageId>$(PackageId)</PackageId>
112+
</_PackageVersionInfo>
113+
</ItemGroup>
114+
</Target>
115+
105116
</Project>

src/ProjectTemplates/GenerateTemplateContent/GenerateTemplateContent.csproj

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,42 @@
1818
IsImplicitlyDefined="true" />
1919
</ItemGroup>
2020

21+
<!--
22+
Computes package version variables for projects defined in this repo that get
23+
referenced in generated template content.
24+
Instead of manually reproducing version values, it extracts the package version
25+
directly from each project.
26+
-->
27+
<Target Name="_GetPackageVersionVariables"
28+
DependsOnTargets="ComputePackageVersionVariableReferences">
29+
<MSBuild Projects="@(PackageVersionVariableReference)"
30+
BuildInParallel="true"
31+
Targets="_GetPackageVersionInfo">
32+
<Output TaskParameter="TargetOutputs" ItemName="_ResolvedPackageVersionInfo" />
33+
</MSBuild>
34+
35+
<ItemGroup>
36+
<_ResolvedPackageVersionVariableReference Include="@(_ResolvedPackageVersionInfo)">
37+
<VersionVariableName>TemplatePackageVersion_$([System.String]::Copy('%(PackageId)').Replace('.', ''))</VersionVariableName>
38+
</_ResolvedPackageVersionVariableReference>
39+
</ItemGroup>
40+
41+
<PropertyGroup>
42+
<GeneratedContentProperties>
43+
$(GeneratedContentProperties);
44+
<!-- Converts each package reference into a property assignment in the format 'TemplatePackageVersion_PackageName=Version'. -->
45+
@(_ResolvedPackageVersionVariableReference->'%(VersionVariableName)=%(PackageVersion)')
46+
</GeneratedContentProperties>
47+
</PropertyGroup>
48+
</Target>
49+
2150
<!--
2251
Computes a hash from the properties passed through to the GenerateFileFromTemplate task
2352
in the _GenerateContent target.
2453
This hash is used to determine if the generated content needs to be re-generated.
2554
-->
2655
<Target Name="_ComputeGeneratedContentPropertiesHash"
27-
DependsOnTargets="ComputeGeneratedContentProperties">
56+
DependsOnTargets="ComputeGeneratedContentProperties;_GetPackageVersionVariables">
2857
<Hash ItemsToHash="$(GeneratedContentProperties)">
2958
<Output TaskParameter="HashResult" PropertyName="_GeneratedContentPropertiesHash" />
3059
</Hash>

src/ProjectTemplates/GeneratedContent.targets

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,25 @@
1313
<_McpServerContentRoot>$(MSBuildThisFileDirectory)Microsoft.Extensions.AI.Templates\src\McpServer\</_McpServerContentRoot>
1414
</PropertyGroup>
1515

16-
<Target Name="ComputeGeneratedContentProperties">
16+
<Target Name="ComputePackageVersionVariableReferences">
1717
<!--
18-
Packages built within this repository.
19-
- Use `$(Version)` to reference just-built packages with the current dev/prerelease version label
20-
- Use `$(VersionPrefix)` to reference the current version without a dev/prerelease version label
21-
- Use specific version numbers to pin to already-released packages
22-
-->
23-
<PropertyGroup>
24-
<TemplatePackageVersion_MicrosoftExtensionsAI>$(Version)</TemplatePackageVersion_MicrosoftExtensionsAI>
25-
<TemplatePackageVersion_MicrosoftExtensionsAI_Preview>$(Version)</TemplatePackageVersion_MicrosoftExtensionsAI_Preview>
26-
<TemplatePackageVersion_MicrosoftExtensionsHttpResilience>$(Version)</TemplatePackageVersion_MicrosoftExtensionsHttpResilience>
27-
</PropertyGroup>
18+
Specifies packages defined in this repo that get referenced in generated template content.
19+
For each item specified below, a property will be generated whose name matches the format:
20+
"TemplatePackageVersion_{PackageName}"
21+
where {PackageName} is the package ID with '.' characters removed.
22+
The value of each property will be the computed package version.
23+
-->
24+
<ItemGroup>
25+
<PackageVersionVariableReference Include="$(RepoRoot)src\Libraries\Microsoft.Extensions.AI\Microsoft.Extensions.AI.csproj"></PackageVersionVariableReference>
26+
<PackageVersionVariableReference Include="$(RepoRoot)src\Libraries\Microsoft.Extensions.AI.OpenAI\Microsoft.Extensions.AI.OpenAI.csproj"></PackageVersionVariableReference>
27+
<PackageVersionVariableReference Include="$(RepoRoot)src\Libraries\Microsoft.Extensions.Http.Resilience\Microsoft.Extensions.Http.Resilience.csproj"></PackageVersionVariableReference>
28+
</ItemGroup>
29+
</Target>
2830

29-
<!-- External dependency packages -->
31+
<Target Name="ComputeGeneratedContentProperties">
32+
<!--
33+
Specifies external packages that get referenced in generated template content.
34+
-->
3035
<PropertyGroup>
3136
<TemplatePackageVersion_Aspire>9.3.0</TemplatePackageVersion_Aspire>
3237
<TemplatePackageVersion_Aspire_Preview>9.3.0-preview.1.25265.20</TemplatePackageVersion_Aspire_Preview>
@@ -47,8 +52,6 @@
4752
</PropertyGroup>
4853

4954
<PropertyGroup>
50-
<_TemplateUsingJustBuiltPackages Condition="'$(TemplatePackageVersion_MicrosoftExtensionsAI)' == '$(Version)' OR '$(TemplatePackageVersion_MicrosoftExtensionsAI_Preview)' == '$(Version)'">true</_TemplateUsingJustBuiltPackages>
51-
5255
<!-- Specify package version variables used in template content. -->
5356
<GeneratedContentProperties>
5457
$(GeneratedContentProperties);
@@ -57,9 +60,6 @@
5760
ArtifactsShippingPackagesDir=$(ArtifactsShippingPackagesDir);
5861

5962
<!-- Package version properties -->
60-
TemplatePackageVersion_MicrosoftExtensionsAI=$(TemplatePackageVersion_MicrosoftExtensionsAI);
61-
TemplatePackageVersion_MicrosoftExtensionsAI_Preview=$(TemplatePackageVersion_MicrosoftExtensionsAI_Preview);
62-
TemplatePackageVersion_MicrosoftExtensionsHttpResilience=$(TemplatePackageVersion_MicrosoftExtensionsHttpResilience);
6363
TemplatePackageVersion_Aspire=$(TemplatePackageVersion_Aspire);
6464
TemplatePackageVersion_Aspire_Preview=$(TemplatePackageVersion_Aspire_Preview);
6565
TemplatePackageVersion_AzureAIOpenAI=$(TemplatePackageVersion_AzureAIOpenAI);
@@ -79,7 +79,6 @@
7979

8080
<!-- Other properties -->
8181
LocalChatTemplateVariant=$(_LocalChatTemplateVariant);
82-
UsingJustBuiltPackages=$(_TemplateUsingJustBuiltPackages);
8382
</GeneratedContentProperties>
8483
</PropertyGroup>
8584

@@ -108,18 +107,9 @@
108107
<GeneratedContent
109108
Include="$(_McpServerContentRoot)McpServer-CSharp\McpServer-CSharp.csproj.in"
110109
OutputPath="$(_McpServerContentRoot)McpServer-CSharp\McpServer-CSharp.csproj" />
111-
112-
<!-- The following content only gets generated when using just-built packages -->
113-
<_GeneratedContentEnablingJustBuiltPackages
110+
<GeneratedContent
114111
Include="$(_ChatWithCustomDataContentRoot)NuGet.config.in"
115112
OutputPath="$(_ChatWithCustomDataContentRoot)NuGet.config" />
116-
117-
<GeneratedContent
118-
Include="@(_GeneratedContentEnablingJustBuiltPackages)"
119-
Condition="'$(_TemplateUsingJustBuiltPackages)' == 'true'" />
120-
<GeneratedContentToDelete
121-
Include="@(_GeneratedContentEnablingJustBuiltPackages)"
122-
Condition="'$(_TemplateUsingJustBuiltPackages)' != 'true'" />
123113
</ItemGroup>
124114
</Target>
125115

src/ProjectTemplates/Microsoft.Extensions.AI.Templates/src/ChatWithCustomData/ChatWithCustomData-CSharp.Web/ChatWithCustomData-CSharp.Web.csproj.in

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,19 @@
1414
<!--#if (IsOllama)
1515
<PackageReference Include="OllamaSharp" Version="${TemplatePackageVersion_OllamaSharp}" />
1616
#elif ((IsGHModels || IsOpenAI) && !IsAspire)
17-
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAI_Preview}" />
17+
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAIOpenAI}" />
1818
#elif (IsAzureAiFoundry)
1919
<PackageReference Include="Azure.AI.OpenAI" Version="${TemplatePackageVersion_AzureAIOpenAI}" />
2020
<PackageReference Include="Azure.AI.Projects" Version="${TemplatePackageVersion_AzureAIProjects}" />
21-
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAI_Preview}" />
21+
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAIOpenAI}" />
2222
#endif -->
2323
<!--#if ((IsAzureOpenAI || IsOpenAI || IsGHModels) && IsAspire) -->
2424
<PackageReference Include="Aspire.Azure.AI.OpenAI" Version="${TemplatePackageVersion_Aspire_Preview}" />
25-
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAI_Preview}" />
25+
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAIOpenAI}" />
2626
<!--#endif -->
2727
<!--#if (IsAzureOpenAI && !IsAspire) -->
2828
<PackageReference Include="Azure.AI.OpenAI" Version="${TemplatePackageVersion_AzureAIOpenAI}" />
29-
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAI_Preview}" />
29+
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAIOpenAI}" />
3030
<!--#endif -->
3131
<!--#if (UseManagedIdentity) -->
3232
<PackageReference Include="Azure.Identity" Version="${TemplatePackageVersion_AzureIdentity}" />

src/ProjectTemplates/Microsoft.Extensions.AI.Templates/src/ChatWithCustomData/Directory.Build.targets.in

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,8 @@
44
It will not get included in the built project template.
55
-->
66
<Project>
7-
<PropertyGroup>
8-
<_UsingJustBuiltPackages>${UsingJustBuiltPackages}</_UsingJustBuiltPackages>
9-
</PropertyGroup>
10-
117
<Target
128
Name="_EnsurePackagesBuiltLocally"
13-
Condition="'$(_UsingJustBuiltPackages)' == 'true'"
149
BeforeTargets="Restore">
1510

1611
<Error

0 commit comments

Comments
 (0)