首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mapster.Tool生成映射程序失败

Mapster.Tool生成映射程序失败
EN

Stack Overflow用户
提问于 2021-02-28 13:18:19
回答 1查看 794关注 0票数 0

Mapster.Tool无法生成任何代码。

问题似乎是一个从CosmosClient派生出来的类--我是从nuget包中得到的。

我明白这一例外:

找不到库: Microsoft.Azure.Cosmos.Client 未处理的异常。System.Reflection.ReflectionTypeLoadException:无法加载一个或多个请求类型。 无法加载文件或程序集'Microsoft.Azure.Cosmos.Client,Version=3.16.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35‘。系统找不到指定的文件。 在system.Reflection.RuntimeModule.GetTypes(RuntimeModule模块) 在System.Reflection.RuntimeModule.GetTypes() 在System.Reflection.Assembly.GetTypes() 在Mapster.Tool.Extensions.Scan(CodeGenerationConfig配置中,D:\git\Mapster\src\Mapster.Tool\Extensions.cs:line 177中的程序集) ( Mapster.Tool.Program.GenerateModels(ModelOptions opt) ( D:\git\Mapster\src\Mapster.Tool\Program.cs:line 123 ) 在CommandLine.ParserResultExtensions.WithParsedT 在D:\git\Mapster\src\Mapster.Tool\Program.cs:line 17的Mapster.Tool.Program.Main(String[] args) System.IO.FileNotFoundException:无法加载文件或程序集 'Microsoft.Azure.Cosmos.Client,Version=3.16.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35‘。系统找不到指定的文件。 文件名:'Microsoft.Azure.Cosmos.Client,Version=3.16.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35‘

当我禁用mapster构建目标时,一切都很好。

而且,Microsoft.Azure.Cosmos.Client.dll存在于目标目录中。

哇哦..。我做错什么了?

我不明白为什么mapster不能加载那个程序集。

似乎也没有办法让mapster忽略这个类。

这是密码。

代码语言:javascript
复制
using Mapster;
using Microsoft.Azure.Cosmos;
using System;

namespace MapsterTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }

    public class ApplicationDbClient : CosmosClient
    {
        public ApplicationDbClient() : base("ConnectinString")
        { }
    }

    [AdaptTo(typeof(MyModelDto)), GenerateMapper]
    public class MyModel
    {
        public string SomeProperty { get; set; }
    }

    public class MyModelDto
    {
        public string SomeProperty { get; set; }
    }
}

我的csproj文件:

代码语言:javascript
复制
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Mapster" Version="7.1.5" />
    <PackageReference Include="Microsoft.Azure.Cosmos" Version="3.16.0" />
  </ItemGroup>

  <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;" />
    <Exec WorkingDirectory="$(ProjectDir)" Command="dotnet mapster extension -a &quot;$(TargetDir)$(ProjectName).dll&quot;" />
    <Exec WorkingDirectory="$(ProjectDir)" Command="dotnet mapster mapper -a &quot;$(TargetDir)$(ProjectName).dll&quot;" />
  </Target>

  <ItemGroup>
    <Generated Include="**\*.g.cs" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Models\" />
  </ItemGroup>
  <Target Name="CleanGenerated">
    <Delete Files="@(Generated)" />
  </Target>
  
</Project>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-13 18:56:07

结果发现,这是多个运行时程序集的问题。见这个github问题

mapster.tool版本8.2.0已经修复了这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66409492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档