title: What's the best way to do a bulk namespace rename on a large c# application?
body: <p>First, a little background.</p>
  
  <p>Currently namespaces and assemblies in our codebase (~60 assemblies, thousands of classes) looks like</p>
  
  <pre><code>WidgetCompany.Department.Something
  </code></pre>
  
  <p>We have now been spun off such that we are selling the software that drives a WidgetCompany, so we 'd like to rename the namespaces &amp; assemblies</p>
  
  <pre><code>NewCompany.Something
  </code></pre>
  
  <p>Under normal circumstances I'd probably just stick with the old namespace, but the problem is our customers don't want to see the name of one of their competitors anywhere in the application.  In the off chance that they see a stack trace, assembly properties etc, it shouldn't show up.  It's not meant to hide our associates or do anything sinister, we just need to make sure that people know we are a separate entity, separate management, and they don't need to worry about data being shared etc.</p>
  
  <p>Now the question.  What is the best way to perform this type of all encompassing rename?
  The following would need to change:</p>
  
  <ul>
  <li>Namespace for (almost) every class in
  the application </li>
  <li>Every <code>using</code> statement in the application which references the old names</li>
  <li>Folder structure for each project</li>
  <li>References between projects which rely on changed folder structure</li>
  <li>.Sln files which reference the changed folder structure</li>
  <li>Any references to
  those classes which are fully
  qualified (should be few and far
  between) </li>
  <li>Any references to those
  classes in xml config files (config
  sections etc) </li>
  <li>AssemblyInfo.cs files for every assembly </li>
  <li>AssemblyName in every .csproj file</li>
  </ul>
  
  <p>Am I stuck with the find-replace-pray strategy or is there something better?</p>