build(csharp): prepare NuGet package for nuget.org publishing (#668)

* build(csharp): rename NuGet package to Microsoft.Regorus

Align the NuGet package identity with the Microsoft.Regorus
namespace and the Microsoft.* reserved prefix on nuget.org
in preparation for publishing the package.

- Add explicit <PackageId>Microsoft.Regorus</PackageId>
- Update PackageVersion in Directory.Packages.props
- Update version bump regex for new package name

* build(csharp): default to ProjectReference for in-repo consumers

Use ProjectReference for Regorus.Tests, Benchmarks, TestApp,
and TargetExampleApp so that local development does not require
a pre-built .nupkg. PackageReference mode remains available via
/p:UsePackageReference=true for validating the packaged NuGet.

* build(csharp): add nuget.config with source mapping and xtask integration

Add explicit NuGet configuration to ensure in-repo builds always
resolve Microsoft.Regorus from the locally built package, even
after the package is published on nuget.org.

- Add nuget.config with <clear/> and packageSourceMapping
- Update xtask to copy .nupkg into local-packages/ directory
- Pass /p:UsePackageReference=true from xtask for CI testing
- Add restore validation step to the xtask test flow
- Add .gitignore for the local-packages directory
This commit is contained in:
Anand Krishnamoorthi
2026-04-09 16:40:31 -05:00
committed by GitHub
parent 4d35744c4f
commit b9eca934a8
11 changed files with 171 additions and 27 deletions
+1
View File
@@ -0,0 +1 @@
local-packages/
+6 -6
View File
@@ -8,15 +8,15 @@
<PropertyGroup>
<!-- If the environment variable is set (such as in a Github Action run), append the suffix to the version number -->
<RegorusPackageVersionSuffix Condition="'$(VersionSuffix)' != ''">-$(VersionSuffix)</RegorusPackageVersionSuffix>
<UsePackageReference Condition="'$(UsePackageReference)' == ''">false</UsePackageReference>
</PropertyGroup>
<PropertyGroup>
<!-- If the environment variable is set (such as in a Github Action run), append the suffix to the version number -->
<RegorusPackageVersionSuffix Condition="'$(VersionSuffix)' != ''">-$(VersionSuffix)</RegorusPackageVersionSuffix>
</PropertyGroup>
<ItemGroup Condition="'$(UsePackageReference)' != 'true'">
<ProjectReference Include="../Regorus/Regorus.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Regorus" />
<ItemGroup Condition="'$(UsePackageReference)' == 'true'">
<PackageReference Include="Microsoft.Regorus" />
</ItemGroup>
<ItemGroup>
+1 -1
View File
@@ -7,7 +7,7 @@
<ItemGroup>
<!-- Centralize Regorus package version with optional CI suffix -->
<PackageVersion Include="Regorus" Version="$(RegorusPackageVersion)$(RegorusPackageVersionSuffix)" />
<PackageVersion Include="Microsoft.Regorus" Version="$(RegorusPackageVersion)$(RegorusPackageVersionSuffix)" />
<PackageVersion Include="MSTest" Version="3.8.2" />
<PackageVersion Include="System.Text.Json" Version="8.0.5" />
<PackageVersion Include="YamlDotNet" Version="13.7.0" />
@@ -12,6 +12,7 @@
<PropertyGroup>
<!-- If the environment variable is set (such as in a Github Action run), append the suffix to the version number -->
<RegorusPackageVersionSuffix Condition="'$(VersionSuffix)' != ''">-$(VersionSuffix)</RegorusPackageVersionSuffix>
<UsePackageReference Condition="'$(UsePackageReference)' == ''">false</UsePackageReference>
</PropertyGroup>
<ItemGroup>
@@ -23,8 +24,12 @@
<PackageReference Include="YamlDotNet" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Regorus" />
<ItemGroup Condition="'$(UsePackageReference)' != 'true'">
<ProjectReference Include="../Regorus/Regorus.csproj" />
</ItemGroup>
<ItemGroup Condition="'$(UsePackageReference)' == 'true'">
<PackageReference Include="Microsoft.Regorus" />
</ItemGroup>
<ItemGroup>
+1
View File
@@ -2,6 +2,7 @@
<PropertyGroup>
<OutputType>Library</OutputType>
<PackageId>Microsoft.Regorus</PackageId>
<RootNamespace>Microsoft.Regorus</RootNamespace>
<TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
@@ -11,15 +11,15 @@
<PropertyGroup>
<!-- If the environment variable is set (such as in a Github Action run), append the suffix to the version number -->
<RegorusPackageVersionSuffix Condition="'$(VersionSuffix)' != ''">-$(VersionSuffix)</RegorusPackageVersionSuffix>
<UseLocalRegorus Condition="'$(UseLocalRegorus)' == ''">false</UseLocalRegorus>
<UsePackageReference Condition="'$(UsePackageReference)' == ''">false</UsePackageReference>
</PropertyGroup>
<ItemGroup Condition="'$(UseLocalRegorus)' == 'true'">
<ItemGroup Condition="'$(UsePackageReference)' != 'true'">
<ProjectReference Include="../Regorus/Regorus.csproj" />
</ItemGroup>
<ItemGroup Condition="'$(UseLocalRegorus)' != 'true'">
<PackageReference Include="Regorus" />
<ItemGroup Condition="'$(UsePackageReference)' == 'true'">
<PackageReference Include="Microsoft.Regorus" />
</ItemGroup>
<ItemGroup>
+4 -4
View File
@@ -13,14 +13,14 @@
<PropertyGroup>
<!-- Allow CI to append the version suffix for locally built packages -->
<RegorusPackageVersionSuffix Condition="'$(VersionSuffix)' != ''">-$(VersionSuffix)</RegorusPackageVersionSuffix>
<UseLocalRegorus Condition="'$(UseLocalRegorus)' == ''">false</UseLocalRegorus>
<UsePackageReference Condition="'$(UsePackageReference)' == ''">false</UsePackageReference>
</PropertyGroup>
<ItemGroup Condition="'$(UseLocalRegorus)' == 'true'">
<ItemGroup Condition="'$(UsePackageReference)' != 'true'">
<ProjectReference Include="../Regorus/Regorus.csproj" />
</ItemGroup>
<ItemGroup Condition="'$(UseLocalRegorus)' != 'true'">
<PackageReference Include="Regorus" />
<ItemGroup Condition="'$(UsePackageReference)' == 'true'">
<PackageReference Include="Microsoft.Regorus" />
</ItemGroup>
</Project>
+21
View File
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<!-- Local source populated by the xtask with the freshly built .nupkg -->
<add key="local" value="local-packages" />
</packageSources>
<!-- NuGet source mapping: the most-specific pattern wins, so Microsoft.Regorus
always resolves exclusively from "local" even though nuget.org has "*".
See https://learn.microsoft.com/nuget/consume-packages/package-source-mapping -->
<packageSourceMapping>
<packageSource key="nuget.org">
<package pattern="*" />
</packageSource>
<packageSource key="local">
<package pattern="Microsoft.Regorus" />
</packageSource>
</packageSourceMapping>
</configuration>