- Restored the original sort order of projects to keep the empty target framework last (#242, thanks @0xced).
- Ensured Roslyn workspaces get project references added from projects (#241, thanks @AndreasKim).
- Changed how projects are added to the
Workspacein Buildalyzer.Workspaces to be based on the Solution order, if there is a Solution (#241, thanks @AndreasKim). - Increased the default timeout for
dotnet --infocalls from 4 seconds to 10 seconds (#228).
- Added the ability to specify an alternate working directory for running the build in the environment options (#233).
- Removed the dependency on NuGet.Frameworks due to some binding issues (#240).
- Updates Microsoft.Build to 17.0.1, along with some other dependency updates (#234, thanks @pentp).
- Ensures paths being passed to Roslyn in Buildalyzer.Workspaces are absolute (#232, thanks @tjchester).
- Support for nullable context options in Buildalyzer.Workspaces (#235, thanks @Corniel).
- Added a
DOTNET_INFO_WAIT_TIMEenvironment variable that can be used to specify an alternate amount of time to wait fordotnet --infoto complete when getting local SDK information (#236, thanks @phmonte).
- Added support for additional files on
GetWorkspace()(#231, thanks @Corniel).
- Updating Buildalyzer to target .NET 6 (#221, thanks @colombod).
- Updated
Microsoft.CodeAnalysis.CSharp.WorkspacesandMicrosoft.CodeAnalysis.VisualBasic.Workspacesto 4.4.0 (#220, thanks @colombod).
- Fixed a
NullReferenceExceptionfor F# projects (#216, thanks @psfinaki).
- Added a
BuildEnvironment.NoAutoResponseoption to control whether the/noAutoResponseargument is set, with a default oftrueto avoid processing.rspfiles that could conflict with Buildalyzer (#211). - Add API to retrieve compiler command-line and arguments (#212, #213, thanks @siegfriedpammer).
- Added support for Visual Basic projects (#207, thanks @cslong).
- Added support for the
additionalfilecompiler argument asIAnalyzerResult.AdditionalFiles(#200).
- Ensured all project references are distinct (#203, #204, thanks @Mingxue008, @Therzok, and @slang25).
- Updated
MsBuildPipeLoggerto 1.1.6. - Updated
Microsoft.CodeAnalysisto 4.1.0.
- Added SourceLink support.
- Updated
Buildalyzer.Loggerto target .NET Standard 2.0. - Updated
MsBuildPipeLoggerreferences to version 1.1.4.
- Updated Buildalyzer to target .NET Core 3.1 (#197, #189, thanks @AdaskoTheBeAsT and @slang25).
- Made
AnalyzerResults.TargetFrameworksand related properties deterministically ordered (#198, thanks @0xced).
- Added additional logging for Roslyn workspace creation in
Buildalyzer.Workspaces.
- Reverted
UseAppHostback to defaults for Buildalyzer builds in favor of settingComputeNETCoreBuildOutputFilesinstead so that self-contained application builds still work (#194, #185, #187). - Added ability to bypass MSBuild when using .NET Core/.NET (I.e. the
dotnetcommand) so that other commands likepublishcan be invoked (#195, thanks @echalone). - Added support for analyzing build logs that don't set a
TargetFrameworkMonitor(I.e. C++ projects) (#196, thanks @echalone).
- Fixed MSBuild polling in Visual Studio directories when Visual Studio 2022 is installed since it now installs into the normal "Program Files" folder (as opposed to the x86 one).
- Specifies an encoding for source text in
Buildalyzer.Workspacesto avoid CS8055 errors ("Cannot emit debug information for a source text without encoding") when compiling the workspace (#128).
- Added a strongly-typed
PreprocessorSymbolscollection toAnalyzerResultsand used it to flow constants through toBuildalyzer.Workspacesfor .NET 5 and up projects (#191, #192, thanks @richardwerkman). - Set
UseAppHostto false for Buildalyzer builds since there's no need to create native executables for analysis (#185, #187, thanks @slang25). - Added a test project for checking .NET 6 compatibility (#185, #186, thanks @bernd5).
- Updated structured logging library to consolidate MSBuild and binary logging types (internal change, should be no impact to consumers).
- Fixed a bug where Buildalyzer.Workspaces would not add transitive references to projects in the Roslyn workspace (#181).
- No longer attempts to add F# projects from a solution to the Roslyn workspace in Buildalyzer.Workspaces which causes an exception in Roslyn.
- Updated structure logging support to the latest package providing binlog version 14 parsing (#184).
- Updated Microsoft.CodeAnalysis package references in Buildalyzer.Workspaces to 3.11.0.
- Updated MSBuild libraries for programmatic use by Buildalyzer to 16.10.0.
- Fixed a bug with WPF custom control libraries (#178, #179, thanks @markrendle)
- Sets SolutionFilePath in the Workspace Solution when it's available (#177, thanks @markrendle)
- Fixed
ProjectAnalyzerexceptions when the solution file is not in the source root (#175, #176, thanks @psfinaki) - Fixed a small QOL change needed when using Buildalyzer for F# (#172, thanks @dukedagmor)
- Fixed bug when
PackageReferencecontains the name of a package inUpdateinstead ofInclude(#170, #171, thanks @eNeRGy164) - Refactored Buildalyzer.Workspaces so a Microsoft.CodeAnalysis.VisualBasic.Workspaces reference is not needed when not using Visual Basic features (#168, #169, thanks @svick)
- Refactored
ProjectItemto an interfaceIProjectItemfor easier mocking/testing (#161, #162, thanks @fbd) - Fixed .NET Framework TFM identification for .NET Core/.NET 5 and others (#163, #164, thanks @slang25)
- Automatically adds project references that didn't originally exist in the manager when building a Roslyn workspace (#159, #160, thanks @slang25)
- Added Workspaces support for analyzers and source generators (#157, #158, thanks @svick)
- Updated the Microsoft.CodeAnalysis packages to 3.8.0 (#155, thanks @jjonescz)
- Added a fix for F# support (#151, #152, thanks @dukedagmor)
- Added
SourceFilesandReferencesfor F# projects (#146, thanks @dukedagmor) - Fixed an inconsistency between Buildalyzer and MSBuild by adding a trailing directory separator to the solution path (#147, #148, thanks @laurenceSaes)
- Fixed (hopefully) several bugs related to concurrency (#142, #134, #138, thanks @duncanawoods and @SierraNL).
- Added support for specifying additional MSBuild arguments via
EnvironmentOptions.Arguments. - Updated the MSBuild.StructuredLogger package to version 2.1.133
- Updated MSBuild packages to 16.5.0 (#140, thanks @colombod)
- Updated Microsoft.CodeAnalysis packages to 3.6.0
- The result of these package updates is that while Buildalyzer itself targets .NET Standard 2.0, any consuming application will need to target either .NET Core 2.1 or .NET Framework 4.7.2 (or higher)
- [Refactoring] Refactored key classes into interfaces for easier testing (#132, thanks @richardwerkman)
- [Fix] Removed the explicit encoding parameter when generating a
SourceTextin Buildalyzer.Workspaces (#128) - [Fix] Fixes a race condition in
ProcessRunnerinProcess.WaitForExit()calls (#125, thanks @duncanawoods)
- [Fix] Fix for finding the default SDK in some scenarios due to differences in output from dotnet (#120, thanks @patriksvensson)
- [Refactoring] Updates
Microsoft.CodeAnalysisdependencies inBuildalyzer.Workspaces(#124, thanks @farnyser) - [Feature] Support for F# projects (#123)
- [Fix] Removes
IProjectTransformersince Buildalyzer no longer feeds project files to the MSBuild API (#114) - [Feature] Adds back project filtering (#118)
- [Fix] Added "System.Reflection.TypeExtensions" as a direct dependency for .NET Framework consumers (#116)
- [Fix] Disable the COREHOST_TRACE environment variable (#115, thanks @sapsari)
- [Feature] Package references are now available directly in
ProjectFile(#111, thanks @eNeRGy164) - [Feature] Better future-proof MSBuild path discovery (#106, thanks @colombod)
- [Fix] Fixes for csc arguments parser (#100, thanks azyobuzin)
- [Fix] Several fixes for parsing the
csccommand line arguments from the build log (#89) - [Feature] Passes all defined constants from the build to Roslyn (#86)
- [Feature] Now uses a single MSBuild submission and defers restore phase to MSBuild (#66)
- [Feature] Better processing of
dotnetconsole output (#94, thanks @jonstelly) - [Feature] Better support for two-phase builds like Razor projects (#92, #93, thanks @jonstelly)
- [Feature] Parallelize project builds when creating a Roslyn workspace (#91, thanks @jonstelly)
- [Refactoring] Scopes project ID cache when creating Roslyn workspaces to
AnalyzerManager(#87. #88, thanks @wadinj) - [Feature] Adds support for setting a custom
dotnet.exepath (#84, thanks @itn3000) - [Fix] Avoid exceptions when overwriting existing keys in
EnvironmentOptions(#83, thanks @itn3000) - [Feature] Adds
AnalyzerResult.PackageReferencesto easily access project package references (#82, thanks @mholo65)
- [Feature] Adds
AnalyzerManager.Analyze()support for reading MSBuild binary log files - [Fix] Fix for pipe communication problems on Linux
- [Fix] Fix for hang when the MSBuild process fails to start or logger doesn't connect (#78)
- [Breaking Change] [Refactoring] Entire API...again. Consider this the "if at first you don't succeed" release.
- [Refactoring] Now uses MSBuild directly by launching out-of-process MSBuild instances instead of the API - if you can build it, Buildalyzer should be able to
- [Refactoring] Reduced build methods to just
ProjectAnalyzer.Build()and overloads - every build builds now builds every target framework unless otherwise specified and always returns anAnalyzerResults - [Refactoring]
AnalyzerResultbuild results are now limited to what we can pull out of MSBuild logs (which is surprisingly a lot) - file an issue if you're missing something you used to get from the old MSBuild API results
- [Fix] Fix for AssemblyInfo BOM marking (#74, thanks @bhugot)
- [Refactoring] Updated MSBuild assemblies
- [Refactoring] Updated logging assemblies (#69, thanks @ltcmelo)
- [Fix] Fixes for cross-platform path handling (#67, #68, thanks @ltcmelo)
- [Breaking Change] [Refactoring] Entire API. Most of the concepts are the same, but the API has changed significantly since the last release (too many changes to enumerate). Documentation is forthcoming, but I wanted to get this release out the door as soon as possible.
- [Refactoring] Introduces a
ProjectTransformerbase class for specifying project file adjustments instead of a delegate - [Fix] Converts multi-targeted projects into a single target so Buildalyzer can build them (#29, #57)
- [Fix] Calling
ProjectAnalyzer.SetGlobalPropertyandProjectAnalyzer.RemoveGlobalPropertyno longer leaks to projects sharing the sameBuildManager - [Feature] Added ability to set global properties at the
AnalyzerManagerlevel (#52, thanks @dfederm) - [Feature] Added ability to set environment variables for
AnalyzerManager(all projects) andProjectAnalyzer(specific project)
- [Fix] Updated MSBuild API references for latest Visual Studio and .NET SDKs
- [Fix] Added
DisableRarCacheMSBuild property and set tofalse(#56) - [Fix] Added
NuGet.CommonandNuGet.ProjectModelsince they're no longer shipped in the box with the .NET SDK (#49, #54)
- [Fix] Updated MSBuild API references for latest Visual Studio and .NET SDKs
- [Refactoring] Internally refactored the way temporary environment variables are set and unset
- [Feature] Sets environment variable MSBUILD_EXE_PATH while preserving existing value if there is one (#42)
- [Feature] Sets MSBuild project path so properties like MSBuildThisFileDirectory work (#45, thanks @jirikopecky)
- [Breaking Change] [Refactoring] Added
AnalyzerManagerOptionsto encapsulate lesser usedAnalyzerManagerconstructor arguments (#44) - [Fix] Updated MSBuild API references for latest Visual Studio and .NET SDKs
- [Feature] Added support for custom build environments (#41, thanks @dfederm)
- [Feature] Added toggle for whether to clean when compiling (#38, #40, thanks @dfederm)
- [Feature] Added ability to tweak project files prior to build (#36, thanks @Mpdreamz)
- [Feature] Added ability to filter out specific projects in a solution (#35, thanks @Mpdreamz)
- [Fix] Extended timeout to get
dotnet --info(#34, thanks @Mpdreamz)
- [Feature] Workspace extensions now accept
Workspaceinstead of more specificAdhocWorkspace(#31, thanks @Jjagg) - [Fix] Updated MSBuild API references (#32)
- [Fix] A better strategy for .NET Framework SDK projects (#23, #25)
- [Breaking Change] [Refactoring] Changed the
StringBuilderlogging arguments to take aTextWriterinstead (#24) - [Breaking Change] [Refactoring] Renamed
ProjectAnalyzer.ProjectPathtoProjectAnalyzer.ProjectFilePath(and related method arguments) to make it clear this should be a file path - [Feature] Allows passing a
XDocumentas a virtual project file (#19) - [Feature] Adds an option to add known project references to the Roslyn workspace (#22)
- [Fix] Uses the VS toolchain for SDK .NET Framework projects (#23)
- [Fix] Ensures only projects are added when loading a solution (#14, #15, thanks @JosephWoodward)
- [Feature] Support for loading an entire solution into
AnalyzerManager(#13) - [Feature] Chooses the correct SDK folder depending on architecture of the host application (#10)
- [Feature] More test fixes for non-Windows platforms (#9, thanks @JosephWoodward)
- [Feature] Roslyn workspace reflects the correct
OutputKindof the project (#8, thanks @JosephWoodward)
- [Feature] Roslyn workspaces now correctly resolve project references
- [Feature] Support for SDK projects with
Importelements (#1, #6, thanks @mholo65)
- Unreleased, no idea where this version went
- [Fix] Fixed tests when not running on Windows because .NET Framework is unavailable (thanks @JosephWoodward)
- [Feature] Initial support for creating Roslyn workspaces
- Initial release