-
Notifications
You must be signed in to change notification settings - Fork 14
Closed
Description
Description
When I call CompileAssemblyFromFile on my provider instance, the program throws the following error stack trace:
Unhandled Exception: System.ComponentModel.Win32Exception: The system cannot find the file specified
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at FSharp.Compiler.CodeDom.Internal.Compiler.compileFiles(String args, CompilerResults res)
at FSharp.Compiler.CodeDom.Internal.Compiler.compileAssemblyFromFileBatch(CompilerParameters options, String[] fileNames, CompilerResults results, FSharpFunc`2 sortf)
at Program.main(String[] argv)
This occurs despite the fact that System.IO.File.Exists returns true when passed in the file path.
Here is the full code:
open System.IO
open System.CodeDom.Compiler
open FSharp.Compiler.CodeDom
[<EntryPoint>]
let main argv =
let sourceFilePath = Array.get argv 0
if File.Exists(sourceFilePath) then
let provider = new FSharpCodeProvider()
let mutable compilerParameters = CompilerParameters()
compilerParameters.GenerateInMemory <- true
provider.CompileAssemblyFromFile(compilerParameters, [| sourceFilePath |])
|> ignore
else
printf "File does not exist"
0
Here is myfsproj file:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net461</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Compile Include="Program.fs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="FSharp.Compiler.CodeDom" Version="1.0.0.1" />
</ItemGroup>
</Project>
Repro steps
- Create a new application using:
dotnet new console -lang F#. cdinto the application directory.- Paste the above code block into
Program.fs. - Paste the above config block into
<application>.fsproj. dotnet build(succeeds).- Create an F# source file in the same directory and save it as
foo.fs. I used the following:
namespace Foo
type Bar = { baz : int }
dotnet run foo.fs
Expected behavior
The program executes without throwing an exception.
Actual behavior
The program throws System.ComponentModel.Win32Exception with the above stack trace.
Known workarounds
No known workarounds.
Related information
- Operating system: Windows 10, 64-bit OS, x64-based processor
- Branch: Hopefully
master? (installed from nuget) - .NET Runtime, CoreCLR or Mono Version:
dotnet --versionreturns '3.0.100'
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels