【问题标题】:Do .Net embedded resources have a size limit?.Net 嵌入式资源有大小限制吗?
【发布时间】:2020-11-02 23:36:19
【问题描述】:

我正在尝试将多个文件嵌入到 .Net dll 中,但其中一个没有显示在嵌入资源列表中,而且我没有看到任何明显的解释。这个文件唯一的特别之处是它的大小是 77KB,而其他所有文件都

我用谷歌搜索,但没有找到任何答案(也许我不知道如何用谷歌搜索)。

任何答案将不胜感激。

谢谢!

【问题讨论】:

  • 我不知道他们是否这样做,但 77KB 应该没问题。我在一个项目中有一个 191KB 的资源,这很好。
  • 您确定在文件属性中设置了正确的选项吗?
  • 另外,与大小无关的另一个线索是资源链接器没有崩溃。如果它因为太大而无法添加资源,我非常怀疑它会默默地失败。重新检查该文件的资源设置。

标签: .net embedded-resource


【解决方案1】:

我想我找到了解决办法,虽然问题还不清楚。

我更改了文件名。

它被称为“Reference.cs.txt”,但不起作用

我尝试将其更改为“_Reference.cs.txt”,但它也不起作用。

但是当我使用“Reference.xcs.txt”时它起作用了......

也许有人可以分享一下为什么会发生这种情况?

感谢您的回答。

【讨论】:

  • 您很可能遇到了某种过滤器,它试图阻止显示源代码文件。这是一个 asp.net 项目吗?
  • 不,只是一个标准的 C# 类库,但我想你是对的,它一定与它的名称中有 .cs 的事实有关。
【解决方案2】:

我经常使用嵌入式资源。快速搜索我的代码,发现有几个超过 200KB。

您确定 Build Action 设置为“Embedded Resource”吗?

您能否详细说明您是如何尝试访问嵌入式资源的?

您可以在 Reflector 中打开程序集以查看所有嵌入的资源。

【讨论】:

    【解决方案3】:

    我也有同样的问题,但我自己目前正在使用一个大的 CSV。我发现使用它有助于找到它真正使用的名称:

    Dim allRessources() As String = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames()
         For Each rName As String In allRessources
              MsgBox(rName)
         Next
    

    然后,使用相同的技术读取文件内容很重要:

    Dim oRD As IO.Stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)
    Using reader = New StreamReader(oRD, System.Text.Encoding.ASCII)
        Return reader.ReadToEnd().Replace(vbCrLf, vbLf).Split(vbLf)
    End Using
    

    【讨论】:

      猜你喜欢
      • 2010-11-30
      • 1970-01-01
      • 2011-10-30
      • 2016-12-10
      • 2017-11-18
      • 2012-04-14
      • 2011-09-15
      • 2011-09-16
      • 1970-01-01
      相关资源
      最近更新 更多