commandlineparser / commandlineparser/commandline

Version 2.9.1 is generating the exception: System.MissingMethodException

未關閉
#819 4 則留言 1 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
C#
星號
4.8k
分支
478
PR 合併指標
30 天內沒有已合併 PR

描述

I was using version 2.7.82 and wanted to update it to 2.9.1 and started to see the following stack:
```
Unhandled exception. System.MissingMethodException: Method not found: 'Void CommandLine.VerbAttribute..ctor(System.String)'.
at System.ModuleHandle.ResolveMethodHandleInternalCore(RuntimeModule module, Int32 methodToken, IntPtr[] typeInstantiationContext, Int32 typeInstCount, IntPtr[] methodInstantiationContext, Int32 methodInstCount)
at System.ModuleHandle.ResolveMethodHandleInternal(RuntimeModule module, Int32 methodToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext)
at System.Reflection.CustomAttribute.FilterCustomAttributeRecord(MetadataToken caCtorToken, MetadataImport& scope, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, ListBuilder`1& derivedAttributes, RuntimeType& attributeType, IRuntimeMethodInfo& ctor, Boolean& ctorHasParameters, Boolean& isVarArg)
at System.Reflection.CustomAttribute.AddCustomAttributes(ListBuilder`1& attributes, RuntimeModule decoratedModule, Int32 decoratedMetadataToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, ListBuilder`1 derivedAttributes) at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit)
at System.RuntimeType.GetCustomAttributes(Type attributeType, Boolean inherit)
at CommandLine.Core.Verb.<>c.b__22_0(Type type)
at System.Linq.Enumerable.SelectArrayIterator`2.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Enumerable.WhereEnumerableIterator`1.GetCount(Boolean onlyIfCheap)
at System.Linq.Enumerable.Count[TSource](IEnumerable`1 source)
at CommandLine.Core.InstanceChooser.Choose(Func`3 tokenizer, IEnumerable`1 types, IEnumerable`1 arguments, StringComparer nameComparer, Boolean ignoreValueCase, CultureInfo parsingCulture, Boolean autoHelp, Boolean autoVersion, Boolean allowMultiInstance, IEnumerable`1 nonFatalErrors)
at CommandLine.Parser.ParseArguments(IEnumerable`1 args, Type[] types)
at CommandLine.ParserExtensions.ParseArguments[T1,T2,T3,T4](Parser parser, IEnumerable`1 args)
```

All my options have verbs like this:
```
[Verb("analyze", HelpText = "Analyze one or more binary files for security and correctness issues.")]
public class AnalyzeOptions : AnalyzeOptionsBase
```

And I invoke my options like this:
```
return Parser.Default.ParseArguments<
AnalyzeOptions,
TestOptions>(args)
.MapResult(
(AnalyzeOptions analyzeOptions) => new AnalyzeCommand().Run(analyzeOptions),
(TestOptions testOptions) => new TestCommand().Run(testOptions),
_ => HandleParseError(args, richResultCode));
```

貢獻指南

這個儲存庫沒有索引到貢獻指南

研究方向

從回報的 MissingMethodException 堆疊追蹤開始,比較與所示 VerbAttribute 宣告和 ParseArguments 呼叫搭配使用的 CommandLine 2.7.82 與 2.9.1 版本。使用提供的選項型別重現此失敗;在 2.9.1 上相同的呼叫能夠成功剖析且不出現 MissingMethodException 例外,即表示完成。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
csharp
領域
cli
Issue 類型
缺陷
難度
4/5
預估耗時
3-5 天
活躍度
停滯
描述清晰度
需要釐清
新手友好度
25/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。