Skip to content

Commit 3686818

Browse files
authored
Fix ILLink.Substitutions.xml not being embedded in F# assemblies (#19124)
1 parent 240495e commit 3686818

File tree

3 files changed

+13
-14
lines changed

3 files changed

+13
-14
lines changed

UseLocalCompiler.Directory.Build.props

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@
1818
<FSharpPrefer64BitTools>True</FSharpPrefer64BitTools>
1919
</PropertyGroup>
2020

21+
<!--
22+
Use FSharpTargetsShim to redirect the SDK to use the locally built F# targets.
23+
This replaces all the individual UsingTask overrides since Microsoft.FSharp.NetSdk.targets
24+
imports Microsoft.FSharp.Targets which registers all the F# build tasks.
25+
See: https://github.com/dotnet/sdk/blob/main/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.FSharpTargetsShim.targets
26+
-->
2127
<PropertyGroup Condition="'$(LoadLocalFSharpBuild)' == 'True'">
2228
<LocalFSharpBuildBinPath>$(LocalFSharpCompilerPath)/artifacts/bin/fsc/$(LocalFSharpCompilerConfiguration)/net10.0</LocalFSharpBuildBinPath>
2329
<FSharpBuildAssemblyFile>$(LocalFSharpBuildBinPath)/FSharp.Build.dll</FSharpBuildAssemblyFile>
@@ -27,9 +33,6 @@
2733
<FSharpOverridesTargetsShim>$(LocalFSharpBuildBinPath)/Microsoft.FSharp.Overrides.NetSdk.targets</FSharpOverridesTargetsShim>
2834
</PropertyGroup>
2935

30-
<UsingTask Condition="'$(LoadLocalFSharpBuild)' == 'True'" TaskName="FSharpEmbedResourceText" AssemblyFile="$(FSharpBuildAssemblyFile)" Override="true" />
31-
<UsingTask Condition="'$(LoadLocalFSharpBuild)' == 'True'" TaskName="FSharpEmbedResXSource" AssemblyFile="$(FSharpBuildAssemblyFile)" Override="true" />
32-
3336
<ItemGroup>
3437
<Reference Include="$(LocalFSharpCompilerPath)/artifacts/bin/FSharp.Core/$(LocalFSharpCompilerConfiguration)/netstandard2.0/FSharp.Core.dll" />
3538
</ItemGroup>

src/FSharp.Build/Microsoft.FSharp.NetSdk.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and
176176
<GenerateILLinkSubstitutions
177177
AssemblyName="$(AssemblyName)"
178178
IntermediateOutputPath="$(IntermediateOutputPath)">
179-
<Output TaskParameter="GeneratedItems" ItemName="Embed" />
179+
<Output TaskParameter="GeneratedItems" ItemName="EmbeddedResource" />
180180
</GenerateILLinkSubstitutions>
181181
</Target>
182182

tests/AheadOfTime/Trimming/FSharpMetadataResource_Trimming_Test/FSharpMetadataResource_Trimming_Test.fsproj

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,13 @@
2222
<Fsc_DotNET_DotnetFscCompilerPath>$(LocalFSharpBuildBinPath)/fsc.dll</Fsc_DotNET_DotnetFscCompilerPath>
2323
<FSharpPreferNetFrameworkTools>False</FSharpPreferNetFrameworkTools>
2424
<FSharpPrefer64BitTools>True</FSharpPrefer64BitTools>
25+
<!--
26+
Use FSharpTargetsShim to redirect to the locally built targets file.
27+
This is how the .NET SDK supports testing against local F# builds.
28+
See https://github.com/dotnet/sdk/blob/main/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.FSharpTargetsShim.targets
29+
-->
30+
<FSharpTargetsShim>$(LocalFSharpBuildBinPath)/Microsoft.FSharp.NetSdk.targets</FSharpTargetsShim>
2531
</PropertyGroup>
26-
27-
<UsingTask TaskName="GenerateILLinkSubstitutions" AssemblyFile="$(FSharpBuildAssemblyFile)" Override="true" />
28-
29-
<Target Name="GenerateFSharpILLinkSubstitutions" BeforeTargets="AssignTargetPaths">
30-
<GenerateILLinkSubstitutions
31-
AssemblyName="$(AssemblyName)"
32-
IntermediateOutputPath="$(IntermediateOutputPath)">
33-
<Output TaskParameter="GeneratedItems" ItemName="EmbeddedResource" />
34-
</GenerateILLinkSubstitutions>
35-
</Target>
3632

3733
<ItemGroup>
3834
<Compile Include="..\Program.fs" />

0 commit comments

Comments
 (0)