Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MSBuildLocator.QueryVisualStudioInstances Fails on Mac and Linux from Version 1.5.3 #210

Closed
jamesHargreaves12 opened this issue Apr 18, 2023 · 4 comments
Assignees

Comments

@jamesHargreaves12
Copy link

jamesHargreaves12 commented Apr 18, 2023

Starting from version 1.5.3, the MSBuildLocator.QueryVisualStudioInstances method fails to execute in Mac and Linux environments. The error message is as follows:

One or more errors occurred. (Unable to load shared library 'hostfxr' or one of its dependencies. In order to help diagnose loading problems, consider setting the DYLD_PRINT_LIBRARIES environment variable: dlopen(libhostfxr, 1): image not found)
  Inner exception: Unable to load shared library 'hostfxr' or one of its dependencies. In order to help diagnose loading problems, consider setting the DYLD_PRINT_LIBRARIES environment variable: dlopen(libhostfxr, 1): image not found
System.AggregateException: One or more errors occurred. (Unable to load shared library 'hostfxr' or one of its dependencies. In order to help diagnose loading problems, consider setting the DYLD_PRINT_LIBRARIES environment variable: dlopen(libhostfxr, 1): image not found)
 ---> System.DllNotFoundException: Unable to load shared library 'hostfxr' or one of its dependencies. In order to help diagnose loading problems, consider setting the DYLD_PRINT_LIBRARIES environment variable: dlopen(libhostfxr, 1): image not found
   at Microsoft.Build.Locator.NativeMethods.hostfxr_resolve_sdk2(String exe_dir, String working_dir, hostfxr_resolve_sdk2_flags_t flags, hostfxr_resolve_sdk2_result_fn result)
   at Microsoft.Build.Locator.DotNetSdkLocationHelper.GetDotNetBasePaths(String workingDirectory)+MoveNext()
   at Microsoft.Build.Locator.DotNetSdkLocationHelper.GetInstances(String workingDirectory)+MoveNext()
   at Microsoft.Build.Locator.MSBuildLocator.GetInstances(VisualStudioInstanceQueryOptions options)+MoveNext()

It's worth noting that the QueryInstancesTests.DefaultInstanceTest unit test fails with the same issue on my mac.

The underlying cause of this issue is the DllImport("hostfxr"...) fails. It cannot find the hostfxr library without additional information about its location. There are similar issues previously reported on dotnet previews, such as dotnet/runtime#54965. The dotnet team resolved these issues by:

I am unsure if there is a straightforward way to leverage this existing fix, however, reimplementing the second part isn't difficult and would at least provides users with a workaround by specifying the HOSTFXR_PATH variable. A draft PR with a potential implementation can be found here: #209. (note, I don't think this a full solution)

@YuliiaKovalova
Copy link
Contributor

Hi @jamesHargreaves12,

Could you provide repro for this issue?
I assume it will be fixed in the scope of #224, but would like to doublecheck.

We apologize for the late response.

@YuliiaKovalova
Copy link
Contributor

The issue is fixed. Pending release.

@iketw
Copy link

iketw commented Sep 7, 2023

The issue is fixed. Pending release.

Hi @YuliiaKovalova , is the fix released?

@YuliiaKovalova
Copy link
Contributor

The issue is fixed. Pending release.

Hi @YuliiaKovalova , is the fix released?

Hi @iketw ,

Yes, the fix is the part of https://www.nuget.org/packages/Microsoft.Build.Locator/1.6.1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants