- 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
Workspace
in Buildalyzer.Workspaces to be based on the Solution order, if there is a Solution (#241, thanks @AndreasKim). - Increased the default timeout for
dotnet --info
calls 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_TIME
environment variable that can be used to specify an alternate amount of time to wait fordotnet --info
to 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.Workspaces
andMicrosoft.CodeAnalysis.VisualBasic.Workspaces
to 4.4.0 (#220, thanks @colombod).
- Fixed a
NullReferenceException
for F# projects (#216, thanks @psfinaki).
- Added a
BuildEnvironment.NoAutoResponse
option to control whether the/noAutoResponse
argument is set, with a default oftrue
to avoid processing.rsp
files 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
additionalfile
compiler argument asIAnalyzerResult.AdditionalFiles
(#200).
- Ensured all project references are distinct (#203, #204, thanks @Mingxue008, @Therzok, and @slang25).
- Updated
MsBuildPipeLogger
to 1.1.6. - Updated
Microsoft.CodeAnalysis
to 4.1.0.
- Added SourceLink support.
- Updated
Buildalyzer.Logger
to target .NET Standard 2.0. - Updated
MsBuildPipeLogger
references to version 1.1.4.
- Updated Buildalyzer to target .NET Core 3.1 (#197, #189, thanks @AdaskoTheBeAsT and @slang25).
- Made
AnalyzerResults.TargetFrameworks
and related properties deterministically ordered (#198, thanks @0xced).
- Added additional logging for Roslyn workspace creation in
Buildalyzer.Workspaces
.
- Reverted
UseAppHost
back to defaults for Buildalyzer builds in favor of settingComputeNETCoreBuildOutputFiles
instead so that self-contained application builds still work (#194, #185, #187). - Added ability to bypass MSBuild when using .NET Core/.NET (I.e. the
dotnet
command) so that other commands likepublish
can 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.Workspaces
to avoid CS8055 errors ("Cannot emit debug information for a source text without encoding") when compiling the workspace (#128).
- Added a strongly-typed
PreprocessorSymbols
collection toAnalyzerResults
and used it to flow constants through toBuildalyzer.Workspaces
for .NET 5 and up projects (#191, #192, thanks @richardwerkman). - Set
UseAppHost
to 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
ProjectAnalyzer
exceptions 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
PackageReference
contains the name of a package inUpdate
instead 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
ProjectItem
to an interfaceIProjectItem
for 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
SourceFiles
andReferences
for 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
SourceText
in Buildalyzer.Workspaces (#128) - [Fix] Fixes a race condition in
ProcessRunner
inProcess.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.CodeAnalysis
dependencies inBuildalyzer.Workspaces
(#124, thanks @farnyser) - [Feature] Support for F# projects (#123)
- [Fix] Removes
IProjectTransformer
since 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
csc
command 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
dotnet
console 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.exe
path (#84, thanks @itn3000) - [Fix] Avoid exceptions when overwriting existing keys in
EnvironmentOptions
(#83, thanks @itn3000) - [Feature] Adds
AnalyzerResult.PackageReferences
to 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]
AnalyzerResult
build 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
ProjectTransformer
base 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.SetGlobalProperty
andProjectAnalyzer.RemoveGlobalProperty
no longer leaks to projects sharing the sameBuildManager
- [Feature] Added ability to set global properties at the
AnalyzerManager
level (#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
DisableRarCache
MSBuild property and set tofalse
(#56) - [Fix] Added
NuGet.Common
andNuGet.ProjectModel
since 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
AnalyzerManagerOptions
to encapsulate lesser usedAnalyzerManager
constructor 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
Workspace
instead 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
StringBuilder
logging arguments to take aTextWriter
instead (#24) - [Breaking Change] [Refactoring] Renamed
ProjectAnalyzer.ProjectPath
toProjectAnalyzer.ProjectFilePath
(and related method arguments) to make it clear this should be a file path - [Feature] Allows passing a
XDocument
as 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
OutputKind
of the project (#8, thanks @JosephWoodward)
- [Feature] Roslyn workspaces now correctly resolve project references
- [Feature] Support for SDK projects with
Import
elements (#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