Skip to content

Crash on initialisation when included in build with -p:PublishSingleFile=true #193

Open
@varon

Description

@varon

I have encountered a hard crash inside your library due to use of reflection which is not available in a single file publish mode.

This should be very simple to solve.

System.TypeInitializationException: The type initializer for '<StartupCode$Ionide-ProjInfo-ProjectSystem>.$Environment' threw an exception.
 ---> System.ArgumentNullException: Value cannot be null. (Parameter 'path1')
   at System.IO.Path.Combine(String path1, String path2)
   at <StartupCode$Ionide-ProjInfo-ProjectSystem>.$Environment..cctor() in /_//src/Ionide.ProjInfo.ProjectSystem/Environment.fs:line 148
   --- End of inner exception stack trace ---
   at Ionide.ProjInfo.ProjectSystem.Environment.get_dotnetSDKRoot()
   at FsAutoComplete.LspHelpers.FSharpConfig.get_Default() in src/FsAutoComplete/LspHelpers.fs:line 801
   at FsAutoComplete.Lsp.FSharpLspServer..ctor(State state, FSharpLspClient lspClient, ISourceTextFactory sourceTextFactory) in src/FsAutoComplete/LspServers/FsAutoComplete.Lsp.fs:line 52
   at FsAutoComplete.Lsp.FSharpLspServerModule.startCore@3009-56.Invoke(FSharpLspClient lspClient) in src/FsAutoComplete/LspServers/FsAutoComplete.Lsp.fs:line 3012

The precise issue occurs on line:

let dir = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)

Alternative approaches to achieve the same thing are available here: https://stackoverflow.com/questions/58428375/cannot-get-original-executable-path-for-net-core-3-0-single-file-ppublishsin

And the full documentation explaining the compatibility is here: https://learn.microsoft.com/en-us/dotnet/core/deploying/single-file/overview?tabs=cli#api-incompatibility

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions