Я пытаюсь заставить наше приложение обрабатывать различные наборы иконок (сделать его скином). Я спросил об обычном способе сделать это здесь . Когда я попытался применить решение из ответа, я заменил все жестко закодированные пути значков в файлах .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
, применил изменения, перезапустил Visual Studio и попытался построить. Но я получил эту ошибку:
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