title: Avoid hardcoded icon file paths in .resx file
body: <p>I'm trying to get our app to handle different icon sets (make it sort of skinnable). I asked about the usual way to do it <a href="https://stackoverflow.com/questions/8974801/skinnable-windows-forms-app-handle-different-icon-sets">here</a>. When I tried to apply the solution from the answer, I replaced all hardcoded icon paths in .resx files with paths using an environment variable. For example, I replaced...</p>
  
  <pre><code>&lt;data name="btnDel" type="System.Resources.ResXFileRef, System.Windows.Forms"&gt;
      &lt;value&gt;..\..\Icons\btnDel.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&lt;/value&gt;
  &lt;/data&gt;
  </code></pre>
  
  <p>...with:</p>
  
  <pre><code>&lt;data name="btnDel" type="System.Resources.ResXFileRef, System.Windows.Forms"&gt;
      &lt;value&gt;$(IconsFolder)\btnDel.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&lt;/value&gt;
  &lt;/data&gt;
  </code></pre>
  
  <p>Then, as an initial test, I defined a System-level environment variable called <code>IconsFolder</code>, applied changes, restarted Visual Studio and tried to build. But I got this error:</p>
  
  <pre><code>D:\SVN.DRA.WorkingCopy\UserControl\My Project\Resources.resx(123,5): error MSB3103: Invalid Resx file. Could not find a part of the path 'D:\SVN.DRA.WorkingCopy\UserControl\My Project\$(IconsFolder)\btnDel.png'. Line 123, position 5.
  </code></pre>
  
  <p>It seems like .resx files don't understand environment variables. How can I avoid hardcoding those paths, then?</p>
  
  <p><strong>EDIT</strong>: Each icon can be referenced by more than one project, so the environment variable of whatever mechanism is used to configure the paths must be available on a solution-wide basis, and I should be able to set it from inside an MSBuild script.</p>
  
  <p><strong>EDIT 2</strong>: All my forms are defined in C# or VB.NET projects</p>