Skip to content

Mapster Tool Mapper crashes when using MediatR (and possibly other assemblies) #513

@Christoph-Wolf-Coduct

Description

@Christoph-Wolf-Coduct

PS C:\Users\Chris\source\repos\JobScrape.Backend> dotnet mapster mapper -a JobScrape.Backend\obj\Debug\net6.0\JobScrape.Backend.dll

Produces this Exception:

Unhandled exception. System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types.
Could not load file or assembly 'MediatR.Contracts, Version=1.0.1.0, Culture=neutral, PublicKeyToken=bb9a41a5e8aaa7e2'. Invalid pointer (0x80004003 (E_POINTER))
Could not load file or assembly 'MediatR, Version=11.0.0.0, Culture=neutral, PublicKeyToken=bb9a41a5e8aaa7e2'. Invalid pointer (0x80004003 (E_POINTER))
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.Assembly.GetTypes()
at Mapster.TypeAdapterConfig.<>c.b__87_0(Assembly assembly) in C:\Projects\Mapster\src\Mapster\TypeAdapterConfig.cs:line 639
at System.Linq.Enumerable.SelectArrayIterator2.MoveNext() at System.Linq.Enumerable.SelectManySingleSelectorIterator2.ToList()
at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at Mapster.TypeAdapterConfig.Scan(Assembly[] assemblies) in C:\Projects\Mapster\src\Mapster\TypeAdapterConfig.cs:line 639 at Mapster.Tool.Program.GenerateMappers(MapperOptions opt) in C:\Projects\Mapster\src\Mapster.Tool\Program.cs:line 65 at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult1 result, Action`1 action)
at Mapster.Tool.Program.Main(String[] args) in C:\Projects\Mapster\src\Mapster.Tool\Program.cs:line 17
System.IO.FileLoadException: Could not load file or assembly 'MediatR.Contracts, Version=1.0.1.0, Culture=neutral, PublicKeyToken=bb9a41a5e8aaa7e2'. Invalid pointer (0x80004003 (E_POINTER))
File name: 'MediatR.Contracts, Version=1.0.1.0, Culture=neutral, PublicKeyToken=bb9a41a5e8aaa7e2'
---> System.NullReferenceException: Object reference not set to an instance of an object.
at Mapster.Tool.AssemblyResolver.OnResolving(AssemblyLoadContext context, AssemblyName name) in C:\Projects\Mapster\src\Mapster.Tool\AssemblyResolver.cs:line 54
at System.Runtime.Loader.AssemblyLoadContext.GetFirstResolvedAssemblyFromResolvingEvent(AssemblyName assemblyName)
at System.Runtime.Loader.AssemblyLoadContext.ResolveUsingEvent(AssemblyName assemblyName)
at System.Runtime.Loader.AssemblyLoadContext.ResolveUsingResolvingEvent(IntPtr gchManagedAssemblyLoadContext, AssemblyName assemblyName)
System.IO.FileLoadException: Could not load file or assembly 'MediatR, Version=11.0.0.0, Culture=neutral, PublicKeyToken=bb9a41a5e8aaa7e2'. Invalid pointer (0x80004003 (E_POINTER))
File name: 'MediatR, Version=11.0.0.0, Culture=neutral, PublicKeyToken=bb9a41a5e8aaa7e2'
---> System.NullReferenceException: Object reference not set to an instance of an object.
at Mapster.Tool.AssemblyResolver.OnResolving(AssemblyLoadContext context, AssemblyName name) in C:\Projects\Mapster\src\Mapster.Tool\AssemblyResolver.cs:line 54
at System.Runtime.Loader.AssemblyLoadContext.GetFirstResolvedAssemblyFromResolvingEvent(AssemblyName assemblyName)
at System.Runtime.Loader.AssemblyLoadContext.ResolveUsingEvent(AssemblyName assemblyName)
at System.Runtime.Loader.AssemblyLoadContext.ResolveUsingResolvingEvent(IntPtr gchManagedAssemblyLoadContext, AssemblyName assemblyName)

My Normal Setup looks like this:

<Target Name="Mapster" AfterTargets="AfterBuild">
	<Exec WorkingDirectory="$(ProjectDir)" Command="dotnet tool restore" />
	<Exec WorkingDirectory="$(ProjectDir)" Command="dotnet mapster model -a &quot;$(TargetDir)$(ProjectName).dll&quot; -o DTOs -n JobScrape.Backend.DTOs" />
	<Exec WorkingDirectory="$(ProjectDir)" Command="dotnet mapster extension -a &quot;$(TargetDir)$(ProjectName).dll&quot; -o Extensions -n JobScrape.Backend.Extensions" />
	<Exec WorkingDirectory="$(ProjectDir)" Command="dotnet mapster mapper -a &quot;$(TargetDir)$(ProjectName).dll&quot; -o Mappers -n JobScrape.Backend.Mappers" />
</Target>

DTOs and Extension Methods get generated on build, Mappers don't

Packages include

<PropertyGroup>
	<TargetFramework>net6.0</TargetFramework>
	<Nullable>enable</Nullable>
	<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

<ItemGroup>
	<PackageReference Include="Mapster" Version="7.3.0" />
	<PackageReference Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="11.0.0" />
	<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
</ItemGroup>

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions