相关疑难解决方法(0)

查找其他程序集中的所有嵌入资源

我正在为我的项目进行本地化.为此,我有一个类应该从另一个程序集加载一个嵌入的资源,然后读出字符串.

但是我还需要知道这个程序集包含哪些资源文件.这些数字和语言是未知的.

那么如何找出这个程序集中的".resx"文件是如何命名的呢?这些都有相同的方案:"de-DE.resx","en-US.resx",依此类推.

我需要知道这个程序集中包含了多少这些文件,以及它们是哪种语言.

我知道ResourceManager可以访问它们,因此也应该可以以编程方式访问这些信息......

c# resources embedded-resource

13
推荐指数
1
解决办法
1万
查看次数

为什么 resourceReader.GetResourceData 返回偏移 4 的“ResourceTypeCode.Stream”类型的数据

在我的函数 GetAssemblyResourceStream(下面的代码)中,我使用“assembly.GetManifestResourceStream”和“resourceReader.GetResourceData”从 Dll 读取资源。

当我从资源的字节数组设置内存流时,我必须包含 4 个字节的偏移量:

const int OFFSET = 4;
resStream = new MemoryStream(data, OFFSET, data.Length - OFFSET);
Run Code Online (Sandbox Code Playgroud)

那个偏移的原因是什么?它来自哪里?

参考:MSDN ResourceReader 类末尾的示例

另外:我制作了一个测试应用程序来更好地理解资源。该应用程序显示了我在偏移量方面的问题。我的小测试应用程序可在Github (VS 2015)

更新 2015-10-05 10h28由于答案非常低,我怀疑存在错误和/或未记录的行为。我在Connect.Microsoft.com 上报告了一个错误,并将看到结果。

2015-10-07 更新我删除了错误。我仍然认为它没有得到很好的记录和/或可以被视为一个错误,但我非常怀疑他们会在不做任何事情的情况下关闭我的请求。我希望没有人会遇到和我一样的问题。

代码:

   // ******************************************************************
    /// <summary>
    /// The path separator is '/'.  The path should not start with '/'.
    /// </summary>
    /// <param name="asm"></param>
    /// <param name="path"></param>
    /// <returns></returns>
    public static Stream GetAssemblyResourceStream(Assembly asm, string path)
    {
        // Just to be …
Run Code Online (Sandbox Code Playgroud)

c# resources stream character-encoding offset

5
推荐指数
1
解决办法
1403
查看次数

如何从包含任何程序集的程序集和路径的Uri加载资源?

我想只使用其uri从任何程序集(同一个应用程序)加载任何资源.两个程序集都是同一应用程序的一部分.

因为我希望能够从任何程序集加载,所以我不能使用未在通用Dll中定义的"App"或"Application".

我认为部分或答案正在使用: System.Reflection.Assembly.GetCallingAssembly().GetManifestResourceStream(path);

但我找不到如何从uri中正确查找/提取/解析程序集?

笔记:

  • 资源实际上定义为"资源".
  • 该资源不是WPF资源字典的标准.
  • 资源实际上是一个XML文件,但可以是任何东西

到目前为止(约3小时后),使用反射器后,似乎使用静态System.Windows.Application.GetResourceStream(uri).Stream具有资源缓存等优点.这很糟糕,因为它被挂钩到WPF(System.windows).我正在寻找一种更好的方法(不依赖于任何特定的UI框架)来完成这项工作.

c# resources uri file .net-assembly

1
推荐指数
1
解决办法
2470
查看次数