title: Calling a method as an Extension Method requires more reference than calling it directly
body: <p>I have a extension method in what I will call <strong>HelperAssembly</strong> that looks similar to this:</p>
  
  <pre><code>public static class HelperClass
  {
      public static void MyHelperMethod(this SomeClass some, OtherClass other)
      {
          // This object is defined in OtherAssembly1
          ObjectFromOtherAssembly1 object1 = new ObjectFromOtherAssembly1(some);
  
          // This object is defined in OtherAssembly2
          ObjectFromOtherAssembly2 object2 = new ObjectFromOtherAssembly2(other);
  
          DoStuffWith(object1, object2);    
      }
  }
  </code></pre>
  
  <p>I have an assembly I will call <strong>CallerAssembly</strong> that has a reference to <strong>HelperAssembly</strong>.  </p>
  
  <p>My <strong>HelperAssembly</strong> has a reference to both <strong>OtherAssembly1</strong> and <strong>OtherAssembly2</strong>. </p>
  
  <p>SomeClass and OtherClass are both defineded in <strong>ReferenceAssembly</strong>.  <strong>HelperAssembly</strong> and <strong>CallerAssembly</strong> have a reference to <strong>ReferenceAssembly</strong>.</p>
  
  <p>Everything is great when I call my method from <strong>CallerAssembly</strong> like this:</p>
  
  <pre><code>HelperClass.MyHelperMethod(some, other);
  </code></pre>
  
  <p>However, I get build errors when I call it like this (as an extension method):</p>
  
  <pre><code>some.MyHelperMethod(other);
  </code></pre>
  
  <p>The errors say that <strong>CallerAssembly</strong> needs to reference <strong>OtherAssembly1</strong> and <strong>OtherAssembly2</strong>.</p>
  
  <p>I am confused.  I thought that extension method syntax was just syntactical sugar, but did not actually change the way that things compiled.</p>
  
  <p>I do not want to add the references that it is suggesting so I will not make the call as an Extension Method.  But I would like to understand what the difference is.  </p>
  
  <p>Why does calling the method directly build fine but calling it as an Extension Method fail to build?</p>