jeudi 22 avril 2021

C# Loading Assemblies With Names Containing a Dot

In my c# application (asp.net mvc), I want to use Autofac to handle my dependency injection, but I got an error when atttempting to use the RegisterAssemblyTypes function (error message below).

I did some experiments with a new solution and found that the error seems to be related to a dot in the project name. The test solution looks like this:

AssemblyTest.sln

- Main.csproj
--> Program.cs

- TestLoadAssembly.csproj
--> Test.cs

- TestWith.Dots.csproj
--> Test.cs

The test classes both have one method that prints "Hello" to the screen. Program.cs looks like this:

using System.Reflection;

namespace Main
{
    class Program
    {
        static void Main(string[] args)
        {
            var x = Assembly.Load(nameof(TestLoadAssembly)); //This works
            var y = Assembly.LoadFrom("TestWith.Dots.dll"); // This seems to work
            var z = Assembly.Load(nameof(TestWith.Dots)); // Error here
        }
    }
}

Main is the active project, and there are project references from Main to the other two. All projects are .net 5 projects.

The error I get from line 3:

System.IO.FileNotFoundException: 'Could not load file or assembly 'Dots, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.'

My question is, how do I make the third line (z) work? Since the first line works, but the third line does not, it seems the error is related to the dot in the name, or is there something that I'm missing here? However, as line two shows, it seems to work when loading the dll by referencing it directly by name.

I have been staring myself blind at this, so I would appreciate your help!





Aucun commentaire:

Enregistrer un commentaire