Skip to content

Unable to remove backing field #340

Open
@wizgob

Description

@wizgob

Our team is getting random errors during build:
EXEC: Error XW0006 : Unable to remove backing field: type: MyType, property: MyProperty, field:

We are using Xtensive.Orm 6.0.11 with .net 4.7.2.
We are also using Postsharp 2023.0.7

I've been able to attach te debugger to Xtensive.Orm.Weaver.dll: The issue seems to be that RemoveBackingFieldTask.GetBackingFieldName() is returning null.

private string GetBackingFieldName()
{
  foreach (var instruction in property.GetMethod.Body.Instructions) {
    if (instruction.OpCode.Code==Code.Ldfld) {
      var field = (FieldReference) instruction.Operand;
      return field.Name;
    }
  }
  return null;
}

The contents of property.GetMethod.Body.Instructions seems to indicate the assembly was already processed wy the weaver
image

Arguments file passed to the weaver:

/type:.csproj
/backup
/stamp
/pdb
/input:C:\code\Solution\MyProject\obj\Debug\MyProject.dll
[SNIP]

And MyProject.dll from obj\Debug contains the ProcessedByWeaver attribute:
image

This error is a problem for us because the workaround is to clean, the build again the solution which takes 8 minutes because we have a big solution.

I'm not able to reproduce it every time : this error appears randomly.
I suspect something in the build process when doing a partial build of the solution is causing the weaver to get as an input an assembly that is already weaved.

Do you think adding a condition in the weaver do to nothing if the file is already weaved could be a solution?

I have saved the content of an obj folder just before the error and the command to launch the weaver : I can share them privately if needed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions