title: VB.NET Socket Exception only while Debugging
body: <p>I have recently encountered some rather baffling behavior while up-converting a VB.NET solution from VS2005 to VS2010.  For reference, the solution targets .NET 2.0 and was running without error in the debugger prior to the conversion.  In addition to the IDE change, corporate has seen it fit to refresh my device from Win XP (x86) to Win 7 (x64).</p>
  
  <p>Now that I have converted the solution to VS2010, I receive a Socket exception as soon as the debugger loads (details below).  This ONLY occurs in the debugger.  Building the solution in its Release configuration produces a MSI that correctly installs and runs without error.</p>
  
  <p>The details of the exception received are as follows:</p>
  
  <pre><code>System.Net.Sockets.SocketException was unhandled
    Message=An invalid argument was supplied
    Source=System
    ErrorCode=10022
    NativeErrorCode=10022
    StackTrace:
         at System.Net.Sockets.Socket..ctor(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType)
         at System.Net.Sockets.TcpListener..ctor(IPAddress localaddr, Int32 port)
         at System.Runtime.Remoting.Channels.Tcp.TcpServerChannel.SetupChannel()
         at System.Runtime.Remoting.Channels.Tcp.TcpServerChannel..ctor(IDictionary properties, IServerChannelSinkProvider sinkProvider, IAuthorizeRemotingConnection authorizeCallback)
         at System.Runtime.Remoting.Channels.Tcp.TcpChannel..ctor(IDictionary properties, IClientChannelSinkProvider clientSinkProvider, IServerChannelSinkProvider serverSinkProvider)
         at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.RegisterChannel(Boolean SecureChannel)
         at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
         at FSASYSTEM.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
         at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
         at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
         at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
         at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
         at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
         at System.Threading.ThreadHelper.ThreadStart()
    InnerException: 
  </code></pre>
  
  <p>The truly confusing part is that this exception is generated before a single line of my code is executed.  The Main method is generated via VB.NET (managed code) and I am not able to breakpoint it, trap errors within it (due to kernel / application context switching, as I understand it), nor symbolically debug into it.</p>
  
  <p>A possible fix for this would be to target another .NET framework version, however I am really interested in understanding WHY this is happening.  I fail to understand why such an error would only manifest itself in the debugger and not in the released code.  And, yes, I have tried restarting the machine to ensure that there weren't any left-over sockets still listening, causing binding failures.</p>
  
  <p>Thank you in advance for your time and assistance.</p>