mhutch / MonoDevelop.MSBuildEditor

Improved MSBuild editing support
Other
215 stars 26 forks source link

NullRef in MSBuildAttribute.cs:line 43 #162

Closed KirillOsenkov closed 5 months ago

KirillOsenkov commented 6 months ago
System.NullReferenceException: Object reference not set to an instance of an object.
   at string MonoDevelop.MSBuild.Dom.MSBuildDomExtensions.AsConstString(MSBuildObject o) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Dom/MSBuildAttribute.cs:line 43
   at void MonoDevelop.MSBuild.Language.MSBuildInferredSchema.CollectTaskDefinition(MSBuildUsingTaskElement element, MSBuildParserContext parseContext) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildInferredSchema.cs:line 415
   at void MonoDevelop.MSBuild.Language.MSBuildInferredSchema.Build(MSBuildElement element, MSBuildParserContext parseContext) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildInferredSchema.cs:line 98
   at void MonoDevelop.MSBuild.Language.MSBuildInferredSchema.Build(MSBuildElement element, MSBuildParserContext parseContext) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildInferredSchema.cs:line 162
   at MSBuildInferredSchema MonoDevelop.MSBuild.Language.MSBuildInferredSchema.Build(MSBuildProjectElement project, string filename, bool isToplevel, MSBuildParserContext parseContext) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildInferredSchema.cs:line 81
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.Build(XDocument doc, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 71
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.ParseImport(Import import) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 91
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.GetCachedOrParse(string importExpr, string resolvedFilename, string sdk, SdkInfo resolvedSdk, DateTime mtimeUtc, bool isImplicitImport) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 109
   at IEnumerable<Import> MonoDevelop.MSBuild.Language.MSBuildParserContext.ResolveImport(IMSBuildEvaluationContext fileContext, string thisFilePath, ExpressionNode importExpr, string importExprString, string sdk, SdkInfo resolvedSdk, bool isImplicitImport)+MoveNext() in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 203
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImport(MSBuildImportElement element, MSBuildParserContext parseContext, MSBuildImportResolver importResolver) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 206
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImports(MSBuildProjectElement project, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 141
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.Build(XDocument doc, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 69
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.ParseImport(Import import) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 91
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.GetCachedOrParse(string importExpr, string resolvedFilename, string sdk, SdkInfo resolvedSdk, DateTime mtimeUtc, bool isImplicitImport) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 109
   at IEnumerable<Import> MonoDevelop.MSBuild.Language.MSBuildParserContext.ResolveImport(IMSBuildEvaluationContext fileContext, string thisFilePath, ExpressionNode importExpr, string importExprString, string sdk, SdkInfo resolvedSdk, bool isImplicitImport)+MoveNext() in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 203
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImport(MSBuildImportElement element, MSBuildParserContext parseContext, MSBuildImportResolver importResolver) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 206
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImports(MSBuildProjectElement project, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 141
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.Build(XDocument doc, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 69
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.ParseImport(Import import) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 91
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.GetCachedOrParse(string importExpr, string resolvedFilename, string sdk, SdkInfo resolvedSdk, DateTime mtimeUtc, bool isImplicitImport) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 109
   at IEnumerable<Import> MonoDevelop.MSBuild.Language.MSBuildParserContext.ResolveImport(IMSBuildEvaluationContext fileContext, string thisFilePath, ExpressionNode importExpr, string importExprString, string sdk, SdkInfo resolvedSdk, bool isImplicitImport)+MoveNext() in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 203
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImport(MSBuildImportElement element, MSBuildParserContext parseContext, MSBuildImportResolver importResolver) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 206
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImports(MSBuildProjectElement project, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 141
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.Build(XDocument doc, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 69
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.ParseImport(Import import) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 91
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.GetCachedOrParse(string importExpr, string resolvedFilename, string sdk, SdkInfo resolvedSdk, DateTime mtimeUtc, bool isImplicitImport) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 109
   at IEnumerable<Import> MonoDevelop.MSBuild.Language.MSBuildParserContext.ResolveImport(IMSBuildEvaluationContext fileContext, string thisFilePath, ExpressionNode importExpr, string importExprString, string sdk, SdkInfo resolvedSdk, bool isImplicitImport)+MoveNext() in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 203
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImport(MSBuildImportElement element, MSBuildParserContext parseContext, MSBuildImportResolver importResolver) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 206
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImports(MSBuildProjectElement project, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 141
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.Build(XDocument doc, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 69
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.ParseImport(Import import) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 91
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.GetCachedOrParse(string importExpr, string resolvedFilename, string sdk, SdkInfo resolvedSdk, DateTime mtimeUtc, bool isImplicitImport) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 109
   at IEnumerable<Import> MonoDevelop.MSBuild.Language.MSBuildParserContext.ResolveImport(IMSBuildEvaluationContext fileContext, string thisFilePath, ExpressionNode importExpr, string importExprString, string sdk, SdkInfo resolvedSdk, bool isImplicitImport)+MoveNext() in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 203
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImport(MSBuildImportElement element, MSBuildParserContext parseContext, MSBuildImportResolver importResolver) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 206
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImports(MSBuildProjectElement project, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 141
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.Build(XDocument doc, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 69
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.ParseImport(Import import) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 91
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.GetCachedOrParse(string importExpr, string resolvedFilename, string sdk, SdkInfo resolvedSdk, DateTime mtimeUtc, bool isImplicitImport) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 109
   at IEnumerable<Import> MonoDevelop.MSBuild.Language.MSBuildParserContext.ResolveImport(IMSBuildEvaluationContext fileContext, string thisFilePath, ExpressionNode importExpr, string importExprString, string sdk, SdkInfo resolvedSdk, bool isImplicitImport)+MoveNext() in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 203
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImport(MSBuildImportElement element, MSBuildParserContext parseContext, MSBuildImportResolver importResolver) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 206
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImports(MSBuildProjectElement project, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 141
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.Build(XDocument doc, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 69
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.ParseImport(Import import) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 91
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.GetCachedOrParse(string importExpr, string resolvedFilename, string sdk, SdkInfo resolvedSdk, DateTime mtimeUtc, bool isImplicitImport) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 109
   at IEnumerable<Import> MonoDevelop.MSBuild.Language.MSBuildParserContext.ResolveImport(IMSBuildEvaluationContext fileContext, string thisFilePath, ExpressionNode importExpr, string importExprString, string sdk, SdkInfo resolvedSdk, bool isImplicitImport)+MoveNext() in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 203
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImport(MSBuildImportElement element, MSBuildParserContext parseContext, MSBuildImportResolver importResolver) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 206
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImports(MSBuildProjectElement project, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 141
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.Build(XDocument doc, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 69
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.ParseImport(Import import) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 91
   at Import MonoDevelop.MSBuild.Language.MSBuildParserContext.GetCachedOrParse(string importExpr, string resolvedFilename, string sdk, SdkInfo resolvedSdk, DateTime mtimeUtc, bool isImplicitImport) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 109
   at IEnumerable<Import> MonoDevelop.MSBuild.Language.MSBuildParserContext.ResolveImport(IMSBuildEvaluationContext fileContext, string thisFilePath, ExpressionNode importExpr, string importExprString, string sdk, SdkInfo resolvedSdk, bool isImplicitImport)+MoveNext() in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 203
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImport(MSBuildImportElement element, MSBuildParserContext parseContext, MSBuildImportResolver importResolver) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 206
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImports(MSBuildProjectElement project, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 141
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.Build(XDocument doc, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 69
   at MSBuildRootDocument MonoDevelop.MSBuild.Language.MSBuildRootDocument.Parse(ITextSource textSource, string filePath, MSBuildRootDocument previous, MSBuildSchemaProvider schemaProvider, IMSBuildEnvironment environment, ITaskMetadataBuilder taskBuilder, ILogger logger, CancellationToken token) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildRootDocument.cs:line 163
   at Task<MSBuildParseResult> MonoDevelop.MSBuild.Editor.Completion.MSBuildBackgroundParser.StartOperationAsync(XmlParseResult input, MSBuildParseResult previousOutput, XmlParseResult previousInput, CancellationToken token)+() => { } in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild.Editor/MSBuildBackgroundParser.cs:line 74
KirillOsenkov commented 6 months ago

Often followed by

System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
   at bool System.Collections.Generic.List<T>+Enumerator.MoveNextRare()
   at IEnumerable<string> MonoDevelop.MSBuild.Evaluation.MSBuildEvaluatorExtensions.EvaluateWithPermutation(IMSBuildEvaluationContext context, string prefix, ExpressionNode expression, int depth)+MoveNext() in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Evaluation/MSBuildEvaluatorExtensions.cs:line 136
   at IEnumerable<string> MonoDevelop.MSBuild.Evaluation.MSBuildEvaluatorExtensions.EvaluateWithPermutation(IMSBuildEvaluationContext context, string prefix, ExpressionNode expression, int depth)+MoveNext() in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Evaluation/MSBuildEvaluatorExtensions.cs:line 167
   at IEnumerable<string> MonoDevelop.MSBuild.Evaluation.MSBuildEvaluatorExtensions.EvaluatePathWithPermutation(IMSBuildEvaluationContext context, ExpressionNode pathExpression, string baseDirectory)+MoveNext() in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Evaluation/MSBuildEvaluatorExtensions.cs:line 98
   at IEnumerable<TResult> System.Linq.Enumerable.SelectManyIterator<TSource, TResult>(IEnumerable<TSource> source, Func<TSource, IEnumerable<TResult>> selector)+MoveNext()
   at IEnumerable<Import> MonoDevelop.MSBuild.Language.MSBuildParserContext.ResolveImport(IMSBuildEvaluationContext fileContext, string thisFilePath, ExpressionNode importExpr, string importExprString, string sdk, SdkInfo resolvedSdk, bool isImplicitImport)+MoveNext() in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildParserContext.cs:line 138
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImport(MSBuildImportElement element, MSBuildParserContext parseContext, MSBuildImportResolver importResolver) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 206
   at void MonoDevelop.MSBuild.Language.MSBuildDocument.ResolveImports(MSBuildProjectElement project, MSBuildParserContext context) in C:/MonoDevelop.MSBuildEditor/MonoDevelop.MSBuild/Language/MSBuildDocument.cs:line 141
KirillOsenkov commented 6 months ago

Repro:

Paste this line <Import Project="..\Build.props" /> into a .csproj (maybe needs my actual Build.props to disk? unclear)

KirillOsenkov commented 6 months ago

Definitely something around imports