3
我正在使用最新版本的Mono.cecil 我想要做的是我我有一個單獨的dll中的自定義屬性,我想使用mono.cecil 添加屬性到sample.exe中的每個方法,但我得到錯誤「錯誤'System.Void Mono.Cecil.AssemblyDefinition ::。ctor()'在另一個模塊中聲明並需要導入」
「錯誤」System.Void Mono.Cecil.AssemblyDefinition: :.ctor()'在另一個模塊中聲明,需要導入「
任何人都可以幫我解決它嗎?
期待您的幫助.....
//Main File Sample.exe
class SampleItems
{
public static void Main()
{
}
public void Sample()
{
Console.WriteLine("sample");
}
public void Sample1()
{
Console .WriteLine ("sample1");
}
}
=============================== =
Seperate application applying the custom attribute
static void Main(string[] args)
{
//opens the assembly
AssemblyDefinition assemblyDefinition = AssemblyDefinition.ReadAssembly(@"E:\MONOCECIL\POC SAMPLES\Sample.exe.exe");
//AssemblyDefinition as1= AssemblyDefinition .ReadAssembly (@"E:\MONOCECIL\POC SAMPLES\MonoStart\MonoStart\bin\Debug\SampleDll.dll");
var resolver = new DefaultAssemblyResolver();
var systemName = AssemblyNameReference.Parse("SampleDll");
AssemblyDefinition as1 = resolver.Resolve(systemName);
var ty = assemblyDefinition.MainModule.Import(as1.GetType());
var attCtor = ty.Resolve().Methods.First(x => x.Name == ".ctor"
&& x.Parameters.Count == 0);
foreach (var modDef in assemblyDefinition.Modules)
{
foreach (var typeDef in modDef.Types)
{
Console.WriteLine(" +--Type {0}", typeDef.Name);
//All methods in this type
foreach (var methodDef in typeDef.Methods)
{
var custatt = new CustomAttribute(attCtor);
methodDef.CustomAttributes.Add(custatt);
Console.WriteLine(" --Method {0}", methodDef.Name);
}
}
}
assemblyDefinition.Write(@"E:\POSTSHARP SAMPLES\ASPECTDNG\Debug\Sampleupdate.exe");
Console .ReadLine();
}
===============================
Sample dll
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SampleDll
{
[System.AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple=false)]
public sealed class SampleClass :Attribute
{
public SampleClass()
{
}
}
}
謝謝主席先生,我一直在尋找這樣一個很長的時間非常感謝你的指導,還有一件事,先生,我將ASPECTDNG轉換爲支持最新版本的Mono.cecil.9,您可以在轉換過程中指導嗎?此外,我在轉換期間面臨的問題很少... –
@MuruganAlagesan請將問題標記爲已回答。關於AspectDNG轉換,恐怕我現在沒有時間了。但是,如果您有任何問題,我一定會幫助解決單塞西集團的問題。 –