* Updated per feedback. Updated the ConfigParser TryParse method to take into account _s in net10.0 and beyond enum names, and updated the ConfigParserTests to take this update into account.
* update Microsoft.CodeAnalysis.CSharp to 4.12.0 to stop referencing an old version of System.Collections.Immutable
* add new test cases, don't remove existing ones
---------
Co-authored-by: Parker Bibus <parkerbibus@microsoft.com>
* Add support for user-supplied project file detection
* Make ProjectLocator fall back to other locators if enabled
* Implement most of the suggestion
* Use fallback logic instead
* Add a few docs and use default code style
* Include file locator paths in exception message
and rename LocatorArgs to FileLocatorArgs
* Update src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs
Co-authored-by: Tim Cassell <35501420+timcassell@users.noreply.github.com>
* Create integration test
* Support .NET Framework csproj tool chain as well
---------
Co-authored-by: Tim Cassell <35501420+timcassell@users.noreply.github.com>
* Add .NET 10 support
* Use _
---------
Co-authored-by: Tim Cassell <35501420+timcassell@users.noreply.github.com>
Co-authored-by: Adam Sitnik <adam.sitnik@gmail.com>
* Hide the columns described in the issue & add samples for test
* Polish sample names
* remove irrelevant commit from pr
* remove leftovers
* Added some helper classes to inject the configuration into the descriptor handler.
Added attribute parameters instead of checking the metric.Value directly.
* change the injection of configuration
* add tests
* return the singleton pattern
* change private descriptors into internal
Implement descriptorConfigInjector base class to keep the code dry
* remove DescriptorConfigInjector
* remove samples
* Include guid in build artifacts directory when --keepFiles is specified.
* Use an auto-incremented id instead of guid.
Always use same ProgramName regardless of --keepFiles.
Include benchmark assembly name in ProgramName.
* Fix InProcessBenchmarkEmitsSameIL tests.
* Added comment from PR feedback.
* Add documentation for VS Profiler
- This change adds documentation for the Visual Studio profiler.
There is a new document under features that explains how to use the
nuget package and a new sample under IntroVisualStudioDiagnoser. A new
package reference has also been added to the samples project to pull
in the Visual Studio specific diagnosers for the sample project.
* Addressing PR feedback
---------
Co-authored-by: Nik Karpinsky <nikarpin@microsoft.com>
* Ensure revert of system state at Benchmark Process termination, fixes#2483
* PowerManagementApplier and ConsoleTitler system state is now reverted at
Process termination.
* To prevent code duplication, DisposeAtProcessTermination class is
introduced.
* Apply suggestions from code review and add documentation
* Add validation for sealed classes containing benchmarks
* Moved public class validation to CompilationValidator
Co-authored-by: Tim Cassell <35501420+timcassell@users.noreply.github.com>
* workaround known high severity vulnerabilities
* Reverted added dependencies.
Updated dependencies to fix vulnerabilities.
Removed netstandard1.0 target from Annotations.
---------
Co-authored-by: Tim <cassell.timothy@gmail.com>
* Clean up unsupported native AOT flags
* `llcOptimizationPreference` was renamed to `OptimizationPreference` and became supported in .NET 8 (or maybe .NET 7, it doesn't matter)
* `IlcGenerateStackTraceData` is now `StackTraceSupport` and supported. (Also got renamed in .NET 8 or earlier.)
I'm leaving the old names of properties for backcompat. We could also delete them. I don't know how much BDN cares about .NET versions that are out of support.
IlcGenerateCompleteTypeMetadata is unsupported, we don't test it, it's a mode for troubleshooting trimming issues for people who ignore trimming warnings. I don't think BDN should be setting this. You'll only find bugs (https://github.com/dotnet/runtime/issues/106439). So deleting that. Not deleting the API because it looks to be a public API.
Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
All the common logic of profilers moved into `SnapshotProfilerBase` which is the base for `DotMemoryDiagnoser` and `DotTraceDiagnoser`. The common class is inside the main package, so it can be reused by other tools (not only by JetBrains, applicable for any command-line profiler). The dotTrace/dotMemory diagnoser classes have unique simple implementation. `IsSupported` is duplicated on purpose since future versions of dotTrace and dotMemory may have different sets of supported runtimes.
This commit is a first step of the grand API refactoring.
* Cpu Detection Upgrade
* All CPU-related detection logic moved from RuntimeInformation to CpuDetector
* BrandString formatting moved to Perfolizer (see CpuBrandHelper)
* New serializable class for Cpu information: PhdCpu from Perfolizer
* Os Detection Upgrade
* All OS-related detection logic moved from RuntimeInformation to OsDetector
* BrandString formatting moved to Perfolizer (see OsBrandHelper)
* New serializable class for Os information: PhdOs from Perfolizer
* Initial adoption of Phd (Performance History Data)
* Phd from Perfolizer is our future way to keep and process gathered data and measurements
* Only the initial implementation is available, it still misses a lot of features
* Examples of Phd json and corresponding new Summary Tables are in
BenchmarkDotNet/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest*
* Phd can be tried via [PhdExporter]
* Documentation is coming once we have a more complete implementation
* Initial ScottPlotExporter with just Bar Plot and Unit Tests
* Simplifying project settings, added missing common.props, adde some documentation for config settings.
* Removed redundant warning suppressions
* Fix missing public documentation
* Removed redundant condition
* Update tests/BenchmarkDotNet.Exporters.Plotting.Tests/BenchmarkDotNet.Exporters.Plotting.Tests.csproj
---------
Co-authored-by: Tim Cassell <35501420+timcassell@users.noreply.github.com>