C# 使用Cecil在程序集中添加全局自定义属性

C# 使用Cecil在程序集中添加全局自定义属性,c#,mono,assemblies,mono.cecil,C#,Mono,Assemblies,Mono.cecil,我得到了这个属性类: [AttributeUsage(AttributeTargets.Assembly)] public class PostProcessedAssemblyAttribute : Attribute { } 然后写了这个代码: var moduleG = assembly.MainModule; var attributeConstructor = moduleG.ImportReference(

我得到了这个属性类:

[AttributeUsage(AttributeTargets.Assembly)]
public class PostProcessedAssemblyAttribute : Attribute
{
}
然后写了这个代码:

var moduleG = assembly.MainModule;

            var attributeConstructor =
                    moduleG.ImportReference(
                        typeof(PostProcessedAssemblyAttribute).GetConstructor(Type.EmptyTypes));
            var attribute = new CustomAttribute(attributeConstructor);
            assembly.CustomAttributes.Add(attribute);

 assembly.Write(assemblyPath, writerParameters);
如果我读回程序集,我希望属性存在,但它不存在

我不是100%确定我在做什么,所以肯定我做错了什么(例如,我不确定从主模块导入属性是否正确),您能指出问题所在吗


我需要它只是为了将程序集标记为已处理。

代码确实有效,我的错误是仅使用assembly.CustomAttributes.Contains查找属性,而assembly.CustomAttributes.Contains根本无法工作。最终,我解决了这个问题,从实际类型创建了一个TypeReference,并根据需要检查的TypeReference的全名检查CustomAttribute.AttributeType.FullName。

代码确实有效,我的错误是仅使用assembly.CustomAttributes.Contains查找属性,但它根本无法工作。最终我解决了这个问题,从实际类型创建了一个TypeReference,并根据需要检查的TypeReference的全名检查CustomAttribute.AttributeType.FullName。

这里的代码对我来说很好。您是否可以包含一个更完整的示例,该示例显示了这里的程序集之间的关系以及之后如何读取程序集?这里的代码对我来说很好。您是否可以包含一个更完整的示例,该示例显示了此处程序集之间的关系以及之后如何读取程序集?