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 module)
在 System.Reflection.RuntimeModule.GetTypes()
在 System.Reflection.Assembly.GetTypes()
在 Mapster.Tool.Extensions.Scan(CodeGenerationConfig config, Assembly assembly) 在 D 中: \git\Mapster\src\Mapster.Tool\Extensions.cs:第 177 行
位于 D:\git\Mapster\src\Mapster.Tool\Program.cs:第 123 行的 Mapster.Tool.Program.GenerateModels(ModelOptions opt)
在 CommandLine.ParserResultExtensions.WithParsed[T](ParserResult`1 result, Action`1 action)
在 D:\git\Mapster\src\Mapster.Tool\Program 中的 Mapster.Tool.Program.Main(String[] args)。 cs:第 17 行
System.IO.FileNotFoundException:无法加载文件或程序集
“Microsoft.Azure.Cosmos.Client,Version=3.16.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”。该系统找不到指定的文件。
文件名:'Microsoft.Azure.Cosmos.Client,版本=3.16.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35'
当我禁用 mapster 构建目标时,一切正常。
此外,Microsoft.Azure.Cosmos.Client.dll 存在于目标目录中。
Soooo ..我做错了什么?
我不明白为什么 mapster 无法加载该程序集。
似乎也没有办法让 mapster 忽略该类。
这是代码。
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 文件:
<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 "$(TargetDir)$(ProjectName).dll"" />
<Exec WorkingDirectory="$(ProjectDir)" Command="dotnet mapster extension -a "$(TargetDir)$(ProjectName).dll"" />
<Exec WorkingDirectory="$(ProjectDir)" Command="dotnet mapster mapper -a "$(TargetDir)$(ProjectName).dll"" />
</Target>
<ItemGroup>
<Generated Include="**\*.g.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="Models\" />
</ItemGroup>
<Target Name="CleanGenerated">
<Delete Files="@(Generated)" />
</Target>
</Project>