Open AndrewPearson opened 1 year ago
@AndrewPearson, I tried to reproduce the problem and it worked, do you have an example of the project?
Hi @phmonte, Thanks for looking into this (great project btw).
I found this issue while using a dotnet tool called snitch, which makes use of buildalyzer. I did also report the issue on that project (https://github.com/spectresystems/snitch/issues/39)
To replicate the problem:
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<EnablePackageVersionOverride>false</EnablePackageVersionOverride>
</PropertyGroup>
<ItemGroup>
<GlobalPackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.556" />
</ItemGroup>
</Project>
With this solution, try the following code which uses Buildalyzer:
var mgr = new AnalyzerManager();
var projAnalyzer = mgr.GetProject(@"{YourPath}\{YourConsoleProject}.csproj");
var results = projAnalyzer.Build();
var packages =results.Single().PackageReferences;
var styleCop = packages["StyleCop.Analyzers"];
var version = styleCop["Version"];
Console.WriteLine($"stylecop version = '{version}'", version);
When I run this locally, the version is blank.
I hope this explanation is clear enough to explain the problem I see. Please do ask any questions you might have, and thanks again for taking a look.
Thank you very much, I believe it is now possible to simulate, I will update soon.
I added a reproducer. I'm not sure why you use <GlobalPackageReference>
in this case (or at all, I could not find any documentation on it, if you can provide that, that would be appreciated), but the version is not provided by the BuildStatusEventArgs
, I'm not sure why,
If you use <PackageReference>
instead, the version is available.
A description of the use of <GlobalPackageReference>
is available here
@AndrewPearson See my reporducer. I'm affraid that this is bug/feature that is not due to a bug in Buildalyzer. If I may ask, why do you want to know this version?
May be, a (to be created) rule of .NET project file analyers I might solve what you want to achieve?
I use a tool called snitch, which makes use of buildalyzer. Snitch fails to run on a project I have, producing errors. I debugged into snitch's code, and found this issue with the version number being blank.
If a solution uses Directory.Packages.props and has a GlobalPackageReference declaration, then the version number of the package is missing when analyzed.
The package appears in each project's PackageReferences, but the version is blank.