Hi again,

I have found info about to TypeForwardedToAttribute at module.ExportedTypes 
....

As I have commented previously, after strong-name deletion of the friend 
assembly System.Web.Webpages.dll and re-mapping  reference from 
System.Web.Mvc.dll, TypeForwardedToAttributes at metadata becomes into:

.class extern forwarder System.Web.Mvc.TagBuilder
{
  .assembly extern System
}

Nevertheless, when I load ExportedTypes, scope property seems to point out 
to previous version of System.Web.Webpages.dll (preserving PublicKeyToke)

I guess that next step will be delete all this info, and create new 
exported types.....  Is that correct?

In addition....It´s also needed to create custom TypeForwardedToAttribute´s 
?


So far, I have used this logic without success :

                // targetAssembly = [System.Web.Mvc]
                AssemblyDefinition referAssembly = 
AssemblyDefinition.ReadAssembly([System.Web.WebPages.Path]);
                foreach (var typeForwardToLiteral in typesToBeForward)
                {
                    var typeForwardToDefinition = 
referAssembly.MainModule.Types.Where(o => o.Name == 
typeForwardToLiteral).FirstOrDefault();
                    var typeForwardToReference = 
targetAssembly.MainModule.ImportReference(typeForwardToDefinition);

                    MethodReference ctor = 
targetAssembly.MainModule.ImportReference(typeof(TypeForwardedToAttribute).GetConstructor(new
 
Type[] { typeof(System.Type) }));
                    CustomAttribute forwardAttribute = new 
CustomAttribute(ctor);

                     forwardAttribute.ConstructorArguments.Add(new 
CustomAttributeArgument(
                        
 targetAssembly.MainModule.ImportReference(typeof(System.Type)),
                         Type.GetType(typeForwardToReference.FullName)));


                      targetAssembly.CustomAttributes.Add(forwardAttribute);
                      etc..


this doesn´t produce the desired effect at System.Web.Mvc.dll metadata,

In addition, what is the correct way to proceed with ExportedTypes ?


Thanks a lot !
David



El martes, 30 de enero de 2018, 12:40:01 (UTC+1), Molowe escribió:
>
>
> Mayor source of PEVerify errors seems owing to TypeForwardedTo attribute. 
>
> After strong.name deletion all  externs forwarded to 
> "System.Web.WebPages" are transformed into forwards to "System" (that is 
> what ILdasm show us)
>
>
> From
>
> .class extern forwarder System.Web.Mvc.TagBuilder
> {
>   .assembly extern System.Web.WebPages
> }
>
> to
>
> .class extern forwarder System.Web.Mvc.TagBuilder
> {
>   .assembly extern System
> }
>
>
> So far I don´t see this assembly attribute living at 
> AssemblyDefinition.CustomAttributes.
>
> Following syntax doesn´t work
>
> var attributes = targetAssembly.CustomAttributes.Where(attr 
> =>attr.AttributeType.FullName == typeof(TypeForwardedToAttribute).FullName
>
> Is there any default cecil syntax for accessing and editing this info?, 
>
> In this line...., It will be enough using 
> assemblyDef.Main.Module.ImportReference(type) ?
>
>
> Many thanks !
> David
>
>
> El martes, 30 de enero de 2018, 10:17:12 (UTC+1), Molowe escribió:
>>
>> Hi Jb,
>>
>> So far this is the error we are getting:
>>
>> Unable to load type 'System.Web.WebPages.PreApplicationStartCode' of 
>> assembly  'System, Version=4.0.0.0, Culture=neutral, 
>> PublicKeyToken=b77a5c561934e089'.
>>
>> Info PEVerify over System.Web.Mvc.dll also goes in the same direction, 
>> it´s seems issue comes from custom attributes for PreApplicationStartMethod 
>> and TpeForwardedTo 
>>
>>
>> In addition, anytime we need to update a reference assembly for fixing 
>> custom attributes a new strong-name deletion has to be done for saving it, 
>> so the initial process starts again for referenced assembly (transitivity 
>> you metioned)
>>
>>
>>
>> Thanks
>> David 
>>
>>
>> El jueves, 25 de enero de 2018, 22:54:16 (UTC+1), Jb Evain escribió:
>>>
>>> Removing strong name is usually hard as you have to clean references of 
>>> the transitive closure of all assemblies that your program uses.
>>>
>>> What error are you getting? That will usually tell you where to start 
>>> looking.
>>>
>>> Jb
>>>
>>> On Fri, Jan 19, 2018 at 7:43 AM, Molowe <[email protected]> wrote:
>>>
>>>> Hi 
>>>>
>>>> I have built an Injector framework basis on Cecil. So far, I have no 
>>>> issues for injecting aspects to custom.Net Assemblies (client code), so 
>>>> one 
>>>> of my goals is to take step further and try to inject some logic inside 
>>>> native .NET Assemblies (in this case I´m instrumenting 
>>>> System.Web.Mvc.dll). 
>>>> I´m able to inject required aspects inside it, and delete System.Web.Mvc 
>>>> strong name and related attributes (creating a new copy) , and update 
>>>> SampleWeb.dll (MVC web proyect which references System.web.Mvc.dll) 
>>>> reference for consuming the clean copy of System.Web.Mvc.dll without 
>>>> strong 
>>>> name. 
>>>>
>>>> In addition I´ve refreshed all SampleWeb.dll references (by directly 
>>>> importing types inside each one), and also I have updated System.Web.Mvc 
>>>> references (over new copy). In addition I have updated 
>>>> "InternalsVisibleTo" 
>>>> attributes in those assemblies for which System.Web.Mvc.dll depends on 
>>>> (when needed)
>>>>
>>>> So far, I continue exploring posibilities but I´m not able to run 
>>>> SampleWeb
>>>>
>>>> question here : It should be enough using this approach for achieving 
>>>> this goal?  or I´m missing something
>>>>
>>>> thanks in advance !
>>>>
>>>> -- 
>>>> -- 
>>>> --
>>>> 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