У меня проблема с получением потоков для встроенных ресурсов. В большинстве примеров в Интернете показаны пути, которые можно напрямую перевести, изменив косую черту пути на точку для источника (MyFolder / MyFile.ext становится MyNamespace.MyFolder.MyFile.ext). Однако, когда в имени папки есть точка и когда используются специальные символы, получение имени ресурса вручную не работает. Я пытаюсь найти функцию, которая может преобразовать путь к имени ресурса, так как Visual Studio переименовывает их при компиляции.
Эти имена из решения ...
- Содержание / jQuery.UI-1.8.2 / jQuery.UI.css
- Сценарии / JQuery-1.5.2 / jquery.js
- Сценарии / jQuery.jPlayer-2.0.0 / jQuery.jPlayer.js
- Сценарии / jQuery.UI-1.8.2 / jQuery.UI.js
... заменены на эти имена в ресурсах ...
- Content.jQuery.UI_1._8._2.jQuery.UI.css
- Scripts.jQuery_1._5._2.jQuery.js
- Scripts.jQuery.jPlayer_2._0._0.jQuery.jPlayer.js
- Scripts.jQuery.UI_1._8._12.jQuery.UI.js
Косые черты переводятся в точки. Однако, когда точка используется в имени папки, первая точка, очевидно, считается расширением, а остальные точки заменяются префиксом с подчеркиванием. Эта логика не применяется к файлу jQuery.js, хотя, может быть, потому что «расширение» - это одно число? Вот функция, способная перевести проблемы, которые у меня были до сих пор, но не работает по пути jQuery.js.
protected String _GetResourceName( String[] zSegments )
{
String zResource = String.Empty;
for ( int i = 0; i < zSegments.Length; i++ )
{
if ( i != ( zSegments.Length - 1 ))
{
int iPos = zSegments[i].IndexOf( '.' );
if ( iPos != -1 )
{
zSegments[i] = zSegments[i].Substring( 0, iPos + 1 )
+ zSegments[i].Substring( iPos + 1 ).Replace( ".", "._" );
}
}
zResource += zSegments[i].Replace( '/', '.' ).Replace( '-', '_' );
}
return String.Concat( _zAssemblyName, zResource );
}
Есть ли функция, которая может изменить имена для меня? Что это? Или где я могу найти все правила, чтобы написать свою собственную функцию? Спасибо за любую помощь, которую вы можете оказать.