我试图让我们的应用程序处理不同的图标集(使其具有可换肤功能)。我问了通常的做法here。当我试图从答案中应用解决方案时,我用.resx文件中的所有硬编码图标路径替换为使用环境变量的路径。例如,我取代...避免.resx文件中的硬编码图标文件路径
<data name="btnDel" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\..\Icons\btnDel.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
...与:
<data name="btnDel" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>$(IconsFolder)\btnDel.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
然后,作为初始测试中,我所定义的系统级的环境变量称为IconsFolder
,施加变化,重新启动的视觉工作室,并试图建立。但我得到这个错误:
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.
看起来像.resx文件不理解环境变量。那么我怎样才能避免硬编码这些路径呢?
编辑:每个图标可以被多个项目引用,因此任何机制的环境变量用于配置路径必须在解决方案范围内可用,我应该能够设置它从一个MSBuild脚本中。
编辑2:我所有的形式在C#中定义或VB.NET项目
这些说明似乎只适用于Visual C++项目。我忘了提及它,但我所有的表单都是VB.NET和C#项目,它们在属性 - >调试下没有任何环境选项 – 2012-02-03 17:51:15