Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions eng/MSBuild/Packaging.targets
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
<!-- https://learn.microsoft.com/dotnet/fundamentals/package-validation/overview -->
<EnablePackageValidation>true</EnablePackageValidation>

<PackageValidationBaselineVersion Condition=" '$(Stage)' == 'normal' ">9.7.0</PackageValidationBaselineVersion>
<PackageValidationBaselineVersion Condition=" '$(Stage)' == 'normal' ">9.7.0</PackageValidationBaselineVersion>
</PropertyGroup>

<!-- Verify that the minimum supported TFM is actually used. -->
Expand Down Expand Up @@ -93,7 +93,7 @@
!@(_PackageBuildFile->AnyHaveMetadataValue('PackagePathWithoutFilename', '$(_NETStandardCompatErrorPlaceholderFilePackagePath)'))" />
</ItemGroup>
</Target>

<!-- Add the de-duped placeholder file to the package. -->
<Target Name="_AddPlaceholderFileToNone"
AfterTargets="_AddNETStandardCompatErrorFileForPackaging">
Expand All @@ -102,4 +102,15 @@
</ItemGroup>
</Target>

<!-- This target is used to get the package versions of projects. -->
<Target Name="_GetPackageVersionInfo"
Returns="@(_PackageVersionInfo)">
<ItemGroup>
<_PackageVersionInfo Include="$(MSBuildProjectFullPath)">
<PackageVersion>$(PackageVersion)</PackageVersion>
<PackageId>$(PackageId)</PackageId>
</_PackageVersionInfo>
</ItemGroup>
</Target>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,42 @@
IsImplicitlyDefined="true" />
</ItemGroup>

<!--
Computes package version variables for projects defined in this repo that get
referenced in generated template content.
Instead of manually reproducing version values, it extracts the package version
directly from each project.
-->
<Target Name="_GetPackageVersionVariables"
DependsOnTargets="ComputePackageVersionVariableReferences">
<MSBuild Projects="@(PackageVersionVariableReference)"
BuildInParallel="true"
Targets="_GetPackageVersionInfo">
<Output TaskParameter="TargetOutputs" ItemName="_ResolvedPackageVersionInfo" />
</MSBuild>

<ItemGroup>
<_ResolvedPackageVersionVariableReference Include="@(_ResolvedPackageVersionInfo)">
<VersionVariableName>TemplatePackageVersion_$([System.String]::Copy('%(PackageId)').Replace('.', ''))</VersionVariableName>
</_ResolvedPackageVersionVariableReference>
</ItemGroup>

<PropertyGroup>
<GeneratedContentProperties>
$(GeneratedContentProperties);
<!-- Converts each package reference into a property assignment in the format 'TemplatePackageVersion_PackageName=Version'. -->
@(_ResolvedPackageVersionVariableReference->'%(VersionVariableName)=%(PackageVersion)')
</GeneratedContentProperties>
</PropertyGroup>
</Target>

<!--
Computes a hash from the properties passed through to the GenerateFileFromTemplate task
in the _GenerateContent target.
This hash is used to determine if the generated content needs to be re-generated.
-->
<Target Name="_ComputeGeneratedContentPropertiesHash"
DependsOnTargets="ComputeGeneratedContentProperties">
DependsOnTargets="ComputeGeneratedContentProperties;_GetPackageVersionVariables">
<Hash ItemsToHash="$(GeneratedContentProperties)">
<Output TaskParameter="HashResult" PropertyName="_GeneratedContentPropertiesHash" />
</Hash>
Expand Down
46 changes: 18 additions & 28 deletions src/ProjectTemplates/GeneratedContent.targets
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,25 @@
<_McpServerContentRoot>$(MSBuildThisFileDirectory)Microsoft.Extensions.AI.Templates\src\McpServer\</_McpServerContentRoot>
</PropertyGroup>

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

<!-- External dependency packages -->
<Target Name="ComputeGeneratedContentProperties">
<!--
Specifies external packages that get referenced in generated template content.
-->
<PropertyGroup>
<TemplatePackageVersion_Aspire>9.3.0</TemplatePackageVersion_Aspire>
<TemplatePackageVersion_Aspire_Preview>9.3.0-preview.1.25265.20</TemplatePackageVersion_Aspire_Preview>
Expand All @@ -47,8 +52,6 @@
</PropertyGroup>

<PropertyGroup>
<_TemplateUsingJustBuiltPackages Condition="'$(TemplatePackageVersion_MicrosoftExtensionsAI)' == '$(Version)' OR '$(TemplatePackageVersion_MicrosoftExtensionsAI_Preview)' == '$(Version)'">true</_TemplateUsingJustBuiltPackages>

<!-- Specify package version variables used in template content. -->
<GeneratedContentProperties>
$(GeneratedContentProperties);
Expand All @@ -57,9 +60,6 @@
ArtifactsShippingPackagesDir=$(ArtifactsShippingPackagesDir);

<!-- Package version properties -->
TemplatePackageVersion_MicrosoftExtensionsAI=$(TemplatePackageVersion_MicrosoftExtensionsAI);
TemplatePackageVersion_MicrosoftExtensionsAI_Preview=$(TemplatePackageVersion_MicrosoftExtensionsAI_Preview);
TemplatePackageVersion_MicrosoftExtensionsHttpResilience=$(TemplatePackageVersion_MicrosoftExtensionsHttpResilience);
TemplatePackageVersion_Aspire=$(TemplatePackageVersion_Aspire);
TemplatePackageVersion_Aspire_Preview=$(TemplatePackageVersion_Aspire_Preview);
TemplatePackageVersion_AzureAIOpenAI=$(TemplatePackageVersion_AzureAIOpenAI);
Expand All @@ -79,7 +79,6 @@

<!-- Other properties -->
LocalChatTemplateVariant=$(_LocalChatTemplateVariant);
UsingJustBuiltPackages=$(_TemplateUsingJustBuiltPackages);
</GeneratedContentProperties>
</PropertyGroup>

Expand Down Expand Up @@ -108,18 +107,9 @@
<GeneratedContent
Include="$(_McpServerContentRoot)McpServer-CSharp\McpServer-CSharp.csproj.in"
OutputPath="$(_McpServerContentRoot)McpServer-CSharp\McpServer-CSharp.csproj" />

<!-- The following content only gets generated when using just-built packages -->
<_GeneratedContentEnablingJustBuiltPackages
<GeneratedContent
Include="$(_ChatWithCustomDataContentRoot)NuGet.config.in"
OutputPath="$(_ChatWithCustomDataContentRoot)NuGet.config" />

<GeneratedContent
Include="@(_GeneratedContentEnablingJustBuiltPackages)"
Condition="'$(_TemplateUsingJustBuiltPackages)' == 'true'" />
<GeneratedContentToDelete
Include="@(_GeneratedContentEnablingJustBuiltPackages)"
Condition="'$(_TemplateUsingJustBuiltPackages)' != 'true'" />
</ItemGroup>
</Target>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,19 @@
<!--#if (IsOllama)
<PackageReference Include="OllamaSharp" Version="${TemplatePackageVersion_OllamaSharp}" />
#elif ((IsGHModels || IsOpenAI) && !IsAspire)
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAI_Preview}" />
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAIOpenAI}" />
#elif (IsAzureAiFoundry)
<PackageReference Include="Azure.AI.OpenAI" Version="${TemplatePackageVersion_AzureAIOpenAI}" />
<PackageReference Include="Azure.AI.Projects" Version="${TemplatePackageVersion_AzureAIProjects}" />
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAI_Preview}" />
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAIOpenAI}" />
#endif -->
<!--#if ((IsAzureOpenAI || IsOpenAI || IsGHModels) && IsAspire) -->
<PackageReference Include="Aspire.Azure.AI.OpenAI" Version="${TemplatePackageVersion_Aspire_Preview}" />
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAI_Preview}" />
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAIOpenAI}" />
<!--#endif -->
<!--#if (IsAzureOpenAI && !IsAspire) -->
<PackageReference Include="Azure.AI.OpenAI" Version="${TemplatePackageVersion_AzureAIOpenAI}" />
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAI_Preview}" />
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="${TemplatePackageVersion_MicrosoftExtensionsAIOpenAI}" />
<!--#endif -->
<!--#if (UseManagedIdentity) -->
<PackageReference Include="Azure.Identity" Version="${TemplatePackageVersion_AzureIdentity}" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,8 @@
It will not get included in the built project template.
-->
<Project>
<PropertyGroup>
<_UsingJustBuiltPackages>${UsingJustBuiltPackages}</_UsingJustBuiltPackages>
</PropertyGroup>

<Target
Name="_EnsurePackagesBuiltLocally"
Condition="'$(_UsingJustBuiltPackages)' == 'true'"
BeforeTargets="Restore">

<Error
Expand Down
Loading