Oh wow, yeah I see.  Alright, thank you for the links and information.  I 
think that is all the information I need to accomplish the current task at 
hand. :)

Thank you very much!

On Friday, January 9, 2015 at 12:44:50 AM UTC-8, Jb Evain wrote:
>
> If you want to completely change the namespace of System.Net, you're 
> going to need to change the Mono runtime 
>
> If you have a look at: 
>
> https://github.com/mono/mono/blob/master/mono/metadata/socket-io.c 
>
> You'll notice it has several hard coded references to the type names: 
>
>
> https://github.com/mono/mono/blob/b92e560d3f5e2684dfb8af954bebb6b938712598/mono/metadata/socket-io.c#L595
>  
>
> https://github.com/mono/mono/blob/b92e560d3f5e2684dfb8af954bebb6b938712598/mono/metadata/socket-io.c#L838
>  
>
> https://github.com/mono/mono/blob/b92e560d3f5e2684dfb8af954bebb6b938712598/mono/metadata/socket-io.c#L1807
>  
>
> https://github.com/mono/mono/blob/b92e560d3f5e2684dfb8af954bebb6b938712598/mono/metadata/socket-io.c#L628
>  
>
> So if the managed counter part changes, the runtime part won't work. 
>
> Jb 
>
> On Thu, Jan 8, 2015 at 10:17 PM, Brent Farris <[email protected] 
> <javascript:>> wrote: 
> > Ah!  Thank you so much for the reply.  So, if I understand correctly, I 
> will 
> > not be able to solve this with Cecil, but will need to build out my own 
> > version of the System.dll from Mono? 
> > 
> > On Thursday, January 8, 2015 at 1:10:33 AM UTC-8, Jb Evain wrote: 
> >> 
> >> Hi Brent, 
> >> 
> >> This one is pretty simple : some code for the socket support is 
> >> implemented in the runtime (icalls), and are identified by assembly 
> >> name + full type name. 
> >> 
> >> So if you rename the namespace of the type defining the icall, the 
> >> runtime won't be able to map the icalls properly. 
> >> 
> >> Jb 
> >> 
> >> On Thu, Jan 8, 2015 at 2:09 AM, Brent Farris <[email protected]> wrote: 
> >> > (Sorry if this posts 2x, the other post didn't show up/went off into 
> >> > oblivion) 
> >> > 
> >> > Hello, I am curious if anyone happens to know why when I change the 
> >> > namespace of System.Net.Sockets to anything else why it would stop 
> >> > working? 
> >> > 
> >> > I have tested other classes and methods and when I put in a Try/Catch 
> I 
> >> > found that the issue was that it was unable to call the internal 
> method 
> >> > "Socket_internal".  I am sure that this is a problem with any of the 
> >> > internal methods as well.  I am doing a very simple namespace 
> >> > repalcement. 
> >> > Also, please forgive any ignorance, I am fairly new to IL but not C#. 
>  I 
> >> > would like to note that I have tried this by removing the entire 
> foreach 
> >> > loop in the first code snipit and it worked just fine with that 
> library 
> >> > (MySystem.dll) using System.Net.Sockets (was not refrencing the 
> normal 
> >> > System).  So I must be doing something wrong when I rename (or 
> breaking 
> >> > somekind of link to internal functions).  I have tested this by 
> renaming 
> >> > it 
> >> > to System.MyNet.Sockets as well as System.Net.MySockets and all 
> rename 
> >> > attempts at any level cause the failure. 
> >> > 
> >> > Namespace re-write code: 
> >> > using Mono.Cecil; 
> >> > 
> >> > namespace CecilNamespaceRenamer 
> >> > { 
> >> >     class Program 
> >> >     { 
> >> >         static void Main (string[] args) 
> >> >         { 
> >> >             var assembly = AssemblyDefinition.ReadAssembly 
> >> > (@"/path/to/dir/System.dll"); 
> >> >             var name = assembly.Name; 
> >> > 
> >> >             name.Name = "MySystem.dll"; 
> >> > 
> >> >             foreach (var t in assembly.MainModule.Types) 
> >> >             { 
> >> >                 if (t.Namespace.StartsWith("System")) 
> >> >                     t.Namespace = t.Namespace.Replace ("System", 
> >> > "MySystem"); 
> >> >             } 
> >> > 
> >> >             assembly.Write(@"/path/to/dir/MySystem.dll"); 
> >> >         } 
> >> >     } 
> >> > } 
> >> > 
> >> > Library test code: 
> >> > using System; 
> >> > using MySystem.Net; 
> >> > using MySystem.Net.Sockets; 
> >> > 
> >> > namespace TEsT 
> >> > { 
> >> >     class MainClass 
> >> >     { 
> >> >         public static void Main (string[] args) 
> >> >         { 
> >> >             TcpListener tcpListener = null; 
> >> > 
> >> >             try 
> >> >             { 
> >> >                 tcpListener = new 
> >> > TcpListener(IPAddress.Parse("127.0.0.1"), 
> >> > 15937); 
> >> >                 tcpListener.Start(); 
> >> >             } 
> >> >             catch (MissingMethodException e) 
> >> >             { 
> >> >                 Console.WriteLine(e.Message); 
> >> >             } 
> >> > 
> >> >             Console.WriteLine("TEST"); 
> >> >             Console.ReadKey(); 
> >> >             tcpListener.Stop(); 
> >> >         } 
> >> >     } 
> >> > } 
> >> > 
> >> > 
> >> > -- 
> >> > -- 
> >> > -- 
> >> > 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] <javascript:>. 
> > 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