Skip to content

Conversation

@TheAngryByrd
Copy link
Member

@TheAngryByrd TheAngryByrd commented Jul 27, 2025

This kind of revitalizes #164, but this takes a slightly different approach.

  • Instead of trying to do a DesignTimeBuild within msbuild, it will try to run after a CoreCompile/AfterBuild target actually runs.
  • This uses the RunAnalyzer or RunAnalyzersDuringBuild (see Roslyn variables) to determine if it should run or not.
  • This will skip the FsharpAnalyzerAfterBuild target if CoreCompile does not produce FscArgs. However someone can use FSharpAnalyzers_AlwaysRunAfterBuild to always run after a build, still using Ionide.ProjInfo as before to do design time builds.

TheAngryByrd

This comment was marked as outdated.

@TheAngryByrd TheAngryByrd requested a review from Copilot August 2, 2025 16:52

This comment was marked as outdated.

@TheAngryByrd TheAngryByrd force-pushed the run-analyzers-using-msbuild-fsc-args branch from e8ca072 to 530335b Compare August 2, 2025 16:59
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR enhances the MSBuild integration for F# analyzers by utilizing F# compiler command line arguments (FSC args) when available, improving performance by avoiding design-time builds. It adds the ability to run analyzers automatically after build when enabled through MSBuild properties.

  • Adds automatic analyzer execution after build when RunAnalyzersDuringBuild or RunAnalyzers is set to true
  • Utilizes FscCommandLineArgs from CoreCompile target to speed up analyzer execution
  • Introduces configurable properties for analyzer execution control and error handling

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
FSharp.Analyzers.Build.targets Core implementation adding new targets and properties for automatic analyzer execution
MsBuildExample.fsproj Sample project demonstrating the new MSBuild integration features
Program.fs Sample F# code for testing the analyzer integration
MSBuild.md Documentation explaining the new after-build analyzer functionality
Comments suppressed due to low confidence (2)

src/FSharp.Analyzers.Build/build/FSharp.Analyzers.Build.targets:64

  • This line overwrites the _FSharpAnalyzers_ProjectOptions property that was set earlier to --project "$(MSBuildProjectFile)". The condition should use an 'else' pattern or append to the existing value rather than completely replacing it.
            <_FSharpAnalyzers_ProjectOptions Condition="'@(FscCommandLineArgs->Count())' != '0'">--fsc-args &quot;@(FscCommandLineArgs)&quot;</_FSharpAnalyzers_ProjectOptions>

@nojaf
Copy link
Contributor

nojaf commented Aug 2, 2025

Wow, this looks amazing! Will play with this when I can!

@baronfel
Copy link
Collaborator

baronfel commented Aug 2, 2025

This follows incremental builds so it won't run unless CoreCompile produces FscArgs.

I'm hearing you say that the output Property/Item isn't being set on purely-incremental builds. I'm not sure that is expected behavior - I'd expect that an incrementally-skipped Target would emit its outputs.

@TheAngryByrd
Copy link
Member Author

TheAngryByrd commented Aug 2, 2025

I'd expect that an incrementally-skipped Target would emit its outputs.

Yeah it's not really incremental usingg the Inputs/Outputs semantics, only running conditionally when FscCommandLineArgs gets set from a CoreCompile.

@TheAngryByrd
Copy link
Member Author

Ok updated my comment on incremental builds, since following Inputs/Outputs would probably be too much effort.

Copy link
Contributor

@nojaf nojaf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

This worked for me!
The output is a little less clear; a warning is definitely presented as one you would ignore. But that is probably just the MSBuild way of displaying it.

Treat it as error does come out of this very verbose

  MsBuildExample net8.0 succeeded with 2 warning(s) (1.8s) → artifacts/bin/MsBuildExample/debug_net8.0/MsBuildExample.dll
    /Users/nojaf/Projects/FSharp.Analyzers.SDK/samples/MsBuildExample/Program.fs(5,27): warning OV001: Option.Value shouldn't be used
    /Users/nojaf/Projects/FSharp.Analyzers.SDK/src/FSharp.Analyzers.Build/build/FSharp.Analyzers.Build.targets(66,9): warning MSB3073: The command "dotnet ../../artifacts/bin/FSharp.Analyzers.Cli/debug/FSharp.Analyzers.Cli.dll --fsc-args "-o:/Users/nojaf/Projects/FSharp.Analyzers.SDK/artifacts/obj/MsBuildExample/debug_net8.0/MsBuildExample.dll;-g;--debug:embedded;--embed:/Users/nojaf/Projects/FSharp.Analyzers.SDK/artifacts/obj/MsBuildExample/debug_net8.0/MsBuildExample.AssemblyInfo.fs;--embed:/Users/nojaf/Projects/FSharp.Analyzers.SDK/artifacts/obj/MsBuildExample/debug_net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.fs;--embed:/Users/nojaf/Projects/FSharp.Analyzers.SDK/artifacts/obj/MsBuildExample/debug_net8.0/MsBuildExample.AssemblyInfo.fs;--sourcelink:/Users/nojaf/Projects/FSharp.Analyzers.SDK/artifacts/obj/MsBuildExample/debug_net8.0/MsBuildExample.sourcelink.json;--noframework;--define:TRACE;--define:DEBUG;--define:NET;--define:NET8_0;--define:NETCOREAPP;--define:NET5_0_OR_GREATER;--define:NET6_0_OR_GREATER;--define:NET7_0_OR_GREATER;--define:NET8_0_OR_GREATER;--define:NETCOREAPP1_0_OR_GREATER;--define:NETCOREAPP1_1_OR_GREATER;--define:NETCOREAPP2_0_OR_GREATER;--define:NETCOREAPP2_1_OR_GREATER;--define:NETCOREAPP2_2_OR_GREATER;--define:NETCOREAPP3_0_OR_GREATER;--define:NETCOREAPP3_1_OR_GREATER;--optimize-;--tailcalls-;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/Microsoft.CSharp.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/Microsoft.VisualBasic.Core.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/Microsoft.VisualBasic.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/Microsoft.Win32.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/Microsoft.Win32.Registry.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/mscorlib.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/netstandard.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.AppContext.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Buffers.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Collections.Concurrent.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Collections.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Collections.Immutable.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Collections.NonGeneric.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Collections.Specialized.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ComponentModel.Annotations.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ComponentModel.DataAnnotations.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ComponentModel.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ComponentModel.EventBasedAsync.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ComponentModel.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ComponentModel.TypeConverter.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Configuration.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Console.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Core.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Data.Common.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Data.DataSetExtensions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Data.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.Contracts.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.Debug.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.DiagnosticSource.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.FileVersionInfo.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.Process.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.StackTrace.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.TextWriterTraceListener.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.Tools.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.TraceSource.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.Tracing.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Drawing.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Drawing.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Dynamic.Runtime.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Formats.Asn1.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Formats.Tar.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Globalization.Calendars.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Globalization.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Globalization.Extensions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.Compression.Brotli.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.Compression.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.Compression.FileSystem.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.Compression.ZipFile.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.FileSystem.AccessControl.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.FileSystem.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.FileSystem.DriveInfo.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.FileSystem.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.FileSystem.Watcher.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.IsolatedStorage.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.MemoryMappedFiles.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.Pipes.AccessControl.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.Pipes.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.UnmanagedMemoryStream.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Linq.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Linq.Expressions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Linq.Parallel.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Linq.Queryable.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Memory.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Http.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Http.Json.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.HttpListener.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Mail.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.NameResolution.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.NetworkInformation.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Ping.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Quic.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Requests.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Security.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.ServicePoint.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Sockets.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.WebClient.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.WebHeaderCollection.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.WebProxy.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.WebSockets.Client.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.WebSockets.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Numerics.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Numerics.Vectors.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ObjectModel.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.DispatchProxy.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.Emit.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.Emit.ILGeneration.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.Emit.Lightweight.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.Extensions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.Metadata.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.TypeExtensions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Resources.Reader.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Resources.ResourceManager.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Resources.Writer.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.CompilerServices.Unsafe.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.CompilerServices.VisualC.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Extensions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Handles.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.InteropServices.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.InteropServices.JavaScript.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.InteropServices.RuntimeInformation.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Intrinsics.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Loader.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Numerics.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Serialization.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Serialization.Formatters.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Serialization.Json.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Serialization.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Serialization.Xml.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.AccessControl.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Claims.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.Algorithms.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.Cng.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.Csp.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.Encoding.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.OpenSsl.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.X509Certificates.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Principal.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Principal.Windows.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.SecureString.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ServiceModel.Web.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ServiceProcess.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Text.Encoding.CodePages.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Text.Encoding.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Text.Encoding.Extensions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Text.Encodings.Web.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Text.Json.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Text.RegularExpressions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Channels.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Overlapped.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Tasks.Dataflow.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Tasks.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Tasks.Extensions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Tasks.Parallel.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Thread.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.ThreadPool.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Timer.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Transactions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Transactions.Local.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ValueTuple.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Web.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Web.HttpUtility.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Windows.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.Linq.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.ReaderWriter.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.Serialization.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.XDocument.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.XmlDocument.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.XmlSerializer.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.XPath.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.XPath.XDocument.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/WindowsBase.dll;--target:exe;--warn:3;--warnon:1182,3390;--warnaserror;--warnaserror:3239;--fullpaths;--flaterrors;--highentropyva+;--targetprofile:netcore;--nocopyfsharpcore;--deterministic+;--simpleresolution;--test:GraphBasedChecking;--test:ParallelOptimization;--test:ParallelIlxGen;/Users/nojaf/Projects/FSharp.Analyzers.SDK/artifacts/obj/MsBuildExample/debug_net8.0/MsBuildExample.AssemblyInfo.fs;/Users/nojaf/Projects/FSharp.Analyzers.SDK/artifacts/obj/MsBuildExample/debug_net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.fs;Program.fs" --analyzers-path "../../artifacts/bin/OptionAnalyzer/debug" -v d --treat-as-error OV001" exited with code 254.

@TheAngryByrd TheAngryByrd merged commit 302ef5a into main Sep 16, 2025
2 checks passed
@TheAngryByrd TheAngryByrd changed the title Utilize Fsc args in msbuild analyze if available Utilize RunAnalyzer and Fsc args in msbuild analyze if available Sep 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants