Ah I think I see.

That must be because you're using the System.Reflection type system.

To achieve what you want, you simply need to use the Cecil type system.

Read the AssemblyDefinition for the assembly that contains the
DescriptionAttribute, and import a reference to the MethodDefinition
constructor into your module.

Jb

On Mon, Jul 27, 2015 at 3:52 PM, Greg Rosenbaum <[email protected]> wrote:
> Okay, let me try to explain it again, and this time giving a specific
> example. I want to attach, say, DescriptionAttribute to an assembly I'm
> modifying.
> I need to attach the version of that attribute which is compatible with that
> assembly's target framework version (changing the target framework, even if
> I wanted to do this, probably isn't possible in this case).
> In order to do this, I must get a TypeReference to this attribute's type.
> I'm having trouble getting a TypeReference to the correct version of the
> attribute that comes from the correct assembly. Whatever I do, I can only
> manage to get a reference to the newer type (the one that is referenced by
> my modifying assembly).
>
> On Monday, July 27, 2015 at 3:30:05 PM UTC+3, Jb Evain wrote:
>>
>> Hey Greg,
>>
>> I'm not 100% sure I understand your description of the issue, but you
>> can't use a type defined in a newer version of the .NET framework in
>> an assembly targeting an older version.
>>
>> Is this what you're trying to do?
>>
>> If so, you'll need to change the target framework for the assembly,
>> and fix up its references to the newer version, but it can get hairy
>> if you're using 3rd party assemblies.
>>
>> Jb
>>
>>
>>
>> On Sun, Jul 26, 2015 at 6:20 PM, Greg Rosenbaum <[email protected]>
>> wrote:
>> > Hey there. I've sort of run into a problem, and I'm wondering if anyone
>> > can
>> > help me.
>> >
>> > I'm trying to modify an assembly that uses framework version 3.5, but I
>> > don't want to be limited to that framework myself. I want to embed some
>> > attributes into it, and to do that I need to get references to their
>> > types,
>> > from the correct assembly version. The attributes are standard .NET
>> > attributes and their assemblies live in the GAC.
>> >
>> > I can't seem to manage to do that. I can't import my own types, because
>> > they're from a higher version assembly, and I trying to get the correct
>> > assembly by name (using Module.AssemblyResolver.Resolve), doesn't seem
>> > to
>> > work, even if I specify the exact version I want. It just resolves the
>> > wrong
>> > assembly.
>> >
>> > The only thing that seemed to work was using
>> > System.Reflection.Assembly.ReflectionOnlyLoad to load the assembly from
>> > its
>> > AssemblyName (version + name), and using that FullName (which includes
>> > the
>> > public key) to resolve the assembly using AssemblyResolver. However,
>> > this
>> > doesn't work properly either, because then the modified assembly gets an
>> > indirect dependency on a higher version of mscorlib, somehow. Also, this
>> > seems like a really roundabout way to do this.
>> >
>> > --
>> > --
>> > --
>> > mono-cecil
>> > ---
>> > You received this message because you are subscribed to the Google
>> > Groups
>> > "mono-cecil" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> > an
>> > email to [email protected].
>> > For more options, visit https://groups.google.com/d/optout.

-- 
-- 
--
mono-cecil
--- 
You received this message because you are subscribed to the Google Groups 
"mono-cecil" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to