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.
