Nuget Detection: Nuspec Version as Variable $version$ (Dynamic Versioning)
Summary:
Component Detection does not detect nuspec version if it's a variable $version$
Details:
How does the variable version work in Nuget ?
a .nuspec file in NuGet can have the version specified as a variable. This is typically done using a token that gets replaced with the actual version number at the time of packaging. The token for the version is $version$. This allows for dynamic versioning based on the build or release process, rather than hardcoding the version number in the .nuspec file.
Here's a simplified example of how you might specify the version in a .nuspec file using a variable:
<?xml version="1.0"?>
<package >
<metadata>
<id>ExamplePackage</id>
<version>$version$</version>
<authors>ExampleAuthor</authors>
<owners>ExampleOwner</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Example description</description>
<releaseNotes>This release includes...</releaseNotes>
</metadata>
</package>
When you pack this NuGet package, you would replace $version$ with the actual version number. This can be done automatically by tools like MSBuild or dotnet CLI by passing the version number as a parameter or by using a .csproj file that contains the version information.
The component Detection generates following error log for this:
Version '$version$' from D:\a\_work\1\s\src\Setup.PowerShell\DDSetup.nuspec could not be parsed as a NuGet version
Version '$version$' from D:\a\_work\1\s\src\Setup.Tools\Microsoft.VisualStudio.Setup.Tools.nuspec could not be parsed as a NuGet version
Version '$version$' from D:\a\_work\1\s\src\UpdateDriver\UpdateDriver.nuspec could not be parsed as a NuGet version
Version '$version$' from D:\a\_work\1\s\src\VSInstaller.Managed\VSInstaller.nuspec could not be parsed as a NuGet version
Have the same issue!! Because this check registered a 'PackageParseFailure', I have at least 4 warnings in each Component Governance tasks.
Version '$version$' from D:\a_work\1\s\tools\nuget\protobuf\Microsoft.WindowsAppSDK.Protobuf.nuspec could not be parsed as a NuGet version
... ...
##[warning]Some components or files were not detected due to parsing failures or connectivity issues.
##[warning]Please review the logs above for more detailed information.
##[warning]Components skipped for NuGet detector:
##[warning]- D:\a_work\1\s\tools\nuget\protobuf\Microsoft.WindowsAppSDK.Protobuf.nuspec