Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Welcome to Software Development on Codidact!

Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.

How do you fix 'Failed to load the dll hostfxr.dll' when starting an x86 .NET process in a test run via dotnet test?

+0
−0

How do you fix the error 'Failed to load the DLL hostfxr.dll' when running a .NET test executed via dotnet test and starting an x86 .NET application in the test?

I'm using .NET 8.

Failed to load the dll from [C:\Program Files\dotnet\host\fxr\8.0.4\hostfxr.dll], HRESULT: 0x800700C1
The library hostfxr.dll was found, but loading it from C:\Program Files\dotnet\host\fxr\8.0.4\hostfxr.dll failed
  - Installing .NET prerequisites might help resolve this problem.
     https://go.microsoft.com/fwlink/?linkid=798306
History

0 comment threads

2 answers

+1
−0

Remove DOTNET_ROOT environment variable before process start

process.StartInfo.EnvironmentVariables.Remove("DOTNET_ROOT");

Another option is to use the x86 .NET SDK for running the tests:

& "C:\Program Files (x86)\dotnet\dotnet" test

Source: https://github.com/dotnet/sdk/issues/22647#issuecomment-973898754

History

0 comment threads

+1
−0

To fix this, you must ensure that the dotnet test runner executes as a 32-bit process to match the architecture of the application you are testing.

You have 2 solutions

  1. Use the --arch Flag (Recommended for CI/CD)

    Run your test command with the --arch x86 flag:

    dotnet test --arch x86
    

    This flag forces the .NET host to use the 32-bit SDK and runtime (typically located in C:\Program Files (x86)\dotnet\), which can then correctly load and execute your x86 application.

  2. Configure the Test Project (.csproj)

    For a more permanent solution that works directly within Visual Studio or without needing a special command, you can configure your test project to always target the x86 platform.

Hope this helps!

History

0 comment threads

Sign up to answer this question »