我在获取嵌入资源的流时遇到问题。大多数在线示例显示的路径可以直接通过更改路径中的斜杠为点来翻译源路径(MyFolder/MyFile.ext变为MyNamespace.MyFolder.MyFile.ext)。但是,当文件夹名称包含点并且使用了特殊字符时,手动获取资源名称将无法正常工作。我正在尝试查找一个函数,可以将路径转换为资源名称,因为在编译时Visual Studio会对其进行重命名。
这些名称来自解决方案...
- 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.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 );
}
有没有一个函数可以帮我更改名称?它是什么?或者在哪里可以找到所有规则,以便我可以编写自己的函数?感谢您可能能够提供的任何帮助。
有没有一个函数可以帮我更改名称?它是什么?或者在哪里可以找到所有规则,以便我可以编写自己的函数?感谢您可能能够提供的任何帮助。
Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("World.Media.Vector.svg")
。 - SourceSeeker