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