Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 24 additions & 3 deletions UseLocalCompiler.Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,28 @@
<FSharpOverridesTargetsShim>$(LocalFSharpBuildBinPath)/Microsoft.FSharp.Overrides.NetSdk.targets</FSharpOverridesTargetsShim>
</PropertyGroup>

<ItemGroup>
<Reference Include="$(LocalFSharpCompilerPath)/artifacts/bin/FSharp.Core/$(LocalFSharpCompilerConfiguration)/netstandard2.0/FSharp.Core.dll" />
</ItemGroup>
<!--
Reference the locally built FSharp.Core, picking the assembly that matches how NuGet would
resolve the FSharp.Core package for the consuming project's target framework:
- .NET Framework and netstandard2.0 consumers get the netstandard2.0 assembly.
- Everything else (.NET Core / .NET 5+, netstandard2.1) gets the netstandard2.1 assembly,
which exposes the IAsyncDisposable-based members (e.g. the task builder 'Using' overload).
This runs in a target (rather than a plain ItemGroup) because TargetFramework is not yet known
while Directory.Build.props is being evaluated. It runs before ResolvePackageAssets so the
reference participates in package conflict resolution and suppresses any older FSharp.Core
pulled in transitively by third-party packages.
-->
<Target Name="AddLocalFSharpCoreReference"
Condition="'$(LocalFSharpCompilerPath)' != ''"
BeforeTargets="ResolvePackageAssets;ResolveAssemblyReferences;CollectPackageReferences;CoreCompile">
<PropertyGroup>
<_LocalFSharpCoreTfm Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'">netstandard2.0</_LocalFSharpCoreTfm>
<_LocalFSharpCoreTfm Condition="'$(_LocalFSharpCoreTfm)' == '' and $(TargetFramework.StartsWith('net4'))">netstandard2.0</_LocalFSharpCoreTfm>
<_LocalFSharpCoreTfm Condition="'$(_LocalFSharpCoreTfm)' == '' and '$(TargetFramework)' == 'netstandard2.0'">netstandard2.0</_LocalFSharpCoreTfm>
<_LocalFSharpCoreTfm Condition="'$(_LocalFSharpCoreTfm)' == ''">netstandard2.1</_LocalFSharpCoreTfm>
</PropertyGroup>
<ItemGroup>
<Reference Include="$(LocalFSharpCompilerPath)/artifacts/bin/FSharp.Core/$(LocalFSharpCompilerConfiguration)/$(_LocalFSharpCoreTfm)/FSharp.Core.dll" />
</ItemGroup>
</Target>
</Project>
13 changes: 13 additions & 0 deletions azure-pipelines-PR.yml
Original file line number Diff line number Diff line change
Expand Up @@ -562,6 +562,11 @@ stages:
- script: .\Build.cmd -c Release -pack
env:
NativeToolsOnMachine: true
# This step runs Build.cmd without -ci, so Arcade treats it as a local build and
# re-enables UpdateXlfOnBuild. That intermittently fails on the multi-targeted
# FSharp.Core build with 'The target "UpdateXlf" does not exist ... [TargetFramework=netstandard2.1]'
# (dotnet/fsharp#19961). Updating xlf files is never needed in CI, so disable it here.
UpdateXlfOnBuild: 'false'
- script: .\tests\EndToEndBuildTests\EndToEndBuildTests.cmd -c Release
displayName: End to end build tests

Expand Down Expand Up @@ -818,6 +823,14 @@ stages:
commit: e81e00a464b9d35d272f61708a1a0bfbf487b6d5
buildScript: dotnet build Nu.sln --configuration Release
displayName: Nu_Build
- repo: Lanayx/Oxpecker
commit: cb7e4b83e3f2aba7ded46b17a36d1aea8c13c292
buildScript: dotnet build .\Oxpecker.slnx -bl
displayName: Oxpecker_Build
- repo: Lanayx/Oxpecker
commit: cb7e4b83e3f2aba7ded46b17a36d1aea8c13c292
buildScript: dotnet build .\Oxpecker.Solid.slnx -bl
displayName: Oxpecker_Solid_Build
# Design-time provider packaging oracle. Pin d8aba70 (pre-workaround base of FSharp.Data.GraphQL#583):
# it uses the bare IsFSharpDesignTimeProvider gesture, so the client pack drops the provider without this fix.
# Linux-only: the $PWD local feed and the grep content assertion need bash. (nupkg entry names are stored
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
<ItemGroup>
<PackageReference Include="Microsoft.CommonLanguageServerProtocol.Framework" PrivateAssets="all" Version="4.13.0-3.24579.1" />
<PackageReference Include="Microsoft.VisualStudio.Threading" Version="17.12.21" />
<!-- Pin the transitive MessagePack (via StreamJsonRpc) to a patched version. Older versions (< 2.5.301) have known vulnerabilities (NU1902/NU1903). -->
<PackageReference Include="MessagePack" Version="2.5.302" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
[<FSharp.Test.RunTestCasesInSequence>]
// Serialized (NotThreadSafeResourceCollection => DisableParallelization) because the #r/#load
// script tests resolve references through the shared checker and process-global reference
// resolver. Running concurrently with other collections intermittently drops closure
// diagnostics (e.g. a missing '#r' surfacing as 0 diagnostics). RunTestCasesInSequence alone
// is a no-op marker and does not prevent cross-collection parallelism.
[<Xunit.Collection(nameof FSharp.Test.NotThreadSafeResourceCollection)>]
module FSharp.Compiler.Service.Tests.ScriptDiagnosticsTests

open System
Expand Down
Loading