【发布时间】:2011-04-24 09:22:10
【问题描述】:
我在获取嵌入式资源的流时遇到问题。大多数在线示例显示的路径可以通过将路径的斜杠更改为源的点来直接翻译(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 );
}
是否有可以为我更改名称的功能?它是什么?或者我在哪里可以找到所有规则以便我可以编写自己的函数?感谢您提供的任何帮助。
【问题讨论】:
标签: c# .net resources naming-conventions