I am trying to use an AssemblyBuilder, in order to generate an assembly in F#, according to https://learn.microsoft.com/en-us/dotnet/api/system.reflection.emit.assemblybuilder?view=netcore-3.0 . The problem is that many of the methods and properties described there are not available.
Edit: the following code works when run from F# interactive, but Visual Studio still complains that it cannot find different methods.
open System
open System.Reflection
open System.Reflection.Emit
let generateAssembly (program: CILProgram) (fileName: string) : unit =
let assemblyName = new AssemblyName ("name")
let assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave)
assemblyBuilder.Save("name")
;;
For example, AppDomain.CurrentDomain.DefineDynamicAssembly
, AssemblyBuilderAccess.RunAndSave
or AssemblyBuilder.Save
are not available, am I using a different version? This is my .fsproj file:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<IsPackable>false</IsPackable>
<GenerateProgramFile>false</GenerateProgramFile>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="nunit" Version="3.12.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.13.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
</ItemGroup>
<ItemGroup>
<Compile Include="AbstractSyntax.fs" />
<Compile Include="Parser.fs" />
<Compile Include="Lexer.fs" />
<Compile Include="Helpers.fs" />
<Compile Include="TypeChecker.fs" />
<Compile Include="CILCompiler.fs" />
<Compile Include="CILGenerator.fs" />
<Compile Include="Program.fs" />
<Compile Include="ParserTest.fs" />
<Compile Include="TypeCheckerTest.fs" />
</ItemGroup>
<ItemGroup>
<Reference Include="FsLexYacc.Runtime">
<HintPath>..\..\..\source\FsLexYacc\tests\LexAndYaccMiniProject\bin\Debug\net46\FsLexYacc.Runtime.dll</HintPath>
</Reference>
</ItemGroup>
</Project>