Strip all references to FSharp.Core from a .NET assembly at compile-time, using Fody.
Feather strips all references to FSharp.Core
from any .NET assembly, by either removing useless attributes and methods or by
replacing them with built-in equivalents.
Feather works fully at compile-time (using Fody), and thus
does not require any runtime dependency.
Therefore, Feather can be used to code in F#, while having outputs assembly that do not
require any extra dependencies, and can thus be used directly within C# projects without
requiring FSharp.Core.
It is currently a work in progress. Right now, all references to FSharp.Core are merely
removed; no equivalent function calls are used.
The NuGet package has not been published yet. However, as soon as it will be online, the
following will apply to the installation process of Feather.
Add a dependency to your project:
<ItemGroup>
<PackageReference Include="Feather.Fody" Version="0.1.0" ></PackageReference>
</ItemGroup>
Then, install the Feather weaver by creating a FodyWeavers.xml
file and setting its content
to:
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<Feather ></Feather>
</Weavers>
See the implementation issue for progress details.
A test assembly is available in the Feather.TestAssembly directory,
and contains many declarations that make use of F#-specific features.
This assembly is modified by Feather.Fody on compilation, and should then
lose all its references to FSharp.Core.
The Feather.Tests projects finally ensures that both these statements are true:
Feather.TestAssembly.dll
does not contain any reference to FSharp.Core
.Feather.TestAssembly.dll
can be loaded, and works flawlessly.