-
Notifications
You must be signed in to change notification settings - Fork 60
Open
Description
I have the following MyGenarationSpec:
using My.Project.Common.Data;
using My.Project.Domain.Dto;
using My.Project.ExternalServices.Data.Profiles.Base;
using My.Project.Services.Tracker;
using System.Reflection;
using TypeGen.Core.Converters;
using TypeGen.Core.SpecGeneration;
namespace My.Project.Specs
{
public class MyGenerationSpec : GenerationSpec
{
public override void OnBeforeGeneration(OnBeforeGenerationArgs args)
{
args.GeneratorOptions.BaseOutputDirectory = "../myProject/src/models/";
args.GeneratorOptions.FileNameConverters = new TypeNameConverterCollection(new PascalCaseFileNameConverter());
args.GeneratorOptions.FileHeading = "";
args.GeneratorOptions.PropertyNameConverters = new MemberNameConverterCollection(new PascalCaseToCamelCaseConverter());
AddInterface(typeof(ResponseDto), "Common");
AddInterface(typeof(ResponseGenericDto<>), "Common");
AddInterface(typeof(StationGroup), "Data");
AddInterface(typeof(StationClient), "Data");
Assembly[] currentAssemblies = AppDomain.CurrentDomain.GetAssemblies()
.Where(d => !string.IsNullOrEmpty(d.FullName) && d.FullName.Contains("My.Project", StringComparison.OrdinalIgnoreCase)).ToArray();
var enumTypes = currentAssemblies
.SelectMany(x => x.GetTypes()
.Where(t => !string.IsNullOrEmpty(t.FullName)
&& t.FullName.Contains("My.Project")
&& t.IsEnum)
)
.Distinct()
.ToList();
foreach (var item in enumTypes)
{
AddEnum(item, "Enums");
}
Assembly[] domainAssemblies = (from x in currentAssemblies
where x.GetTypes().Contains(typeof(OrderDto))
select x).ToArray();
var domainDto = domainAssemblies
.SelectMany(x => x
.GetTypes()
.Where(d => d.Name.EndsWith("DTO", StringComparison.OrdinalIgnoreCase)
&& !d.Name.Equals("ResponseDto")))
.Distinct()
.ToList();
foreach (var item in domainDto)
{
AddInterface(item, "Dto");
}
var dtosApplicationData = currentAssemblies
.SelectMany(x => x
.GetTypes()
.Where(d => d.Name.EndsWith("Dto", StringComparison.OrdinalIgnoreCase)
))
.Distinct()
.ToList();
foreach (var dto in dtosApplicationData)
{
AddInterface(dto, "Dto");
}
var responses = currentAssemblies
.SelectMany(x => x
.GetTypes()
.Where(d => (d.Name.EndsWith("Response", StringComparison.OrdinalIgnoreCase)))
.Distinct()
.ToList();
var configs = currentAssemblies
.SelectMany(x => x
.GetTypes()
.Where(d =>
(d.Name.EndsWith("Configurations")
|| d.Name.EndsWith("WebServiceConfig"))
&& !d.Name.Equals("ReloadConfigurationsCommand", StringComparison.OrdinalIgnoreCase)))
.Distinct()
.ToList();
responses.AddRange(configs);
foreach (var response in responses)
{
AddInterface(response, "Response");
}
var requests = currentAssemblies
.SelectMany(x => x
.GetTypes()
.Where(d => d.Name.EndsWith("Request", StringComparison.OrdinalIgnoreCase)))
.Distinct()
.ToList();
foreach (var request in requests)
{
AddInterface(request, "Request");
}
}
}
}
And when I do the build or rebuild, knowing that I have the following command to ben run on the .csproj
<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="'$(Configuration)' == 'Debug'">
<Exec Command="dotnet-typegen generate" ContinueOnError="true" IgnoreExitCode="true" />
</Target>
I'm getting the following error:
28>Generating files for project "."...
28>Unhandled exception: System.MissingMethodException: Method not found: 'Boolean System.MemoryExtensions.Contains(System.ReadOnlySpan`1<!!0>, !!0, System.Collections.Generic.IEqualityComparer`1<!!0>)'.
28> at My.Project.Specs.MyGenerationSpec.<>c.<OnBeforeGeneration>b__0_2(Assembly x)
28> at System.Linq.Enumerable.ArrayWhereIterator`1.ToArray(ReadOnlySpan`1 source, Func`2 predicate)
28> at System.Linq.Enumerable.ArrayWhereIterator`1.ToArray()
28> at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
28> at My.Project.Specs.MyGenerationSpec.OnBeforeGeneration(OnBeforeGenerationArgs args) in C:\Dev\KDSService\src\My.Project\Specs\MyGenerationSpec.cs:line 43
28> at TypeGen.Core.Generator.Generator.Generate(IEnumerable`1 generationSpecs) in C:\Users\jburz\Google Drive\Projects\TypeGen_OS\src\TypeGen\TypeGen.Core\Generator\Generator.cs:line 149
28> at TypeGen.Cli.Ui.Presenter.GenerateSingle(String projectFolder, String configPath, String outputFolder) in C:\Users\jburz\Google Drive\Projects\TypeGen_OS\src\TypeGen\TypeGen.Cli\Ui\Presenter.cs:line 113
28> at TypeGen.Cli.Ui.Presenter.GeneratePrivate(Boolean verbose, IReadOnlyCollection`1 projectFolderPaths, IReadOnlyCollection`1 configPaths, String outputFolder) in C:\Users\jburz\Google Drive\Projects\TypeGen_OS\src\TypeGen\TypeGen.Cli\Ui\Presenter.cs:line 78
28> at TypeGen.Cli.Ui.Presenter.<>c__DisplayClass9_0.<Generate>b__0() in C:\Users\jburz\Google Drive\Projects\TypeGen_OS\src\TypeGen\TypeGen.Cli\Ui\Presenter.cs:line 61
28> at TypeGen.Cli.Ui.Validation.ValidationResult.Match(Action onSuccess, Action`1 onFailure) in C:\Users\jburz\Google Drive\Projects\TypeGen_OS\src\TypeGen\TypeGen.Cli\Ui\Validation\ValidationResult.cs:line 32
28> at TypeGen.Cli.Ui.Presenter.Generate(Boolean verbose, IReadOnlyCollection`1 projectFolderPaths, IReadOnlyCollection`1 configPaths, String outputFolder) in C:\Users\jburz\Google Drive\Projects\TypeGen_OS\src\TypeGen\TypeGen.Cli\Ui\Presenter.cs:line 59
28> at TypeGen.Cli.Application.<BuildCommandLine>b__5_1(Boolean v, List`1 p, List`1 c, String o) in C:\Users\jburz\Google Drive\Projects\TypeGen_OS\src\TypeGen\TypeGen.Cli\Application.cs:line 98
28> at System.CommandLine.Handler.<>c__DisplayClass5_0`4.<SetHandler>b__0(InvocationContext context)
28> at System.CommandLine.Invocation.AnonymousCommandHandler.Invoke(InvocationContext context)
28> at System.CommandLine.Invocation.AnonymousCommandHandler.InvokeAsync(InvocationContext context)
28> at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
28>--- End of stack trace from previous location ---
28> at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<<UseParseErrorReporting>b__0>d.MoveNext()
28>--- End of stack trace from previous location ---
28> at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass12_0.<<UseHelp>b__0>d.MoveNext()
28>--- End of stack trace from previous location ---
28> at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass22_0.<<UseVersionOption>b__0>d.MoveNext()
28>--- End of stack trace from previous location ---
28> at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass19_0.<<UseTypoCorrections>b__0>d.MoveNext()
28>--- End of stack trace from previous location ---
28> at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseSuggestDirective>b__18_0>d.MoveNext()
28>--- End of stack trace from previous location ---
28> at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass16_0.<<UseParseDirective>b__0>d.MoveNext()
28>--- End of stack trace from previous location ---
28> at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<RegisterWithDotnetSuggest>b__5_0>d.MoveNext()
28>--- End of stack trace from previous location ---
28> at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass8_0.<<UseExceptionHandler>b__0>d.MoveNext()
28>
But the ts files are generate correctly. What is that? How can I fix any ideias?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels