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]> 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]. > 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.
