首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET: Resgen教程

.NET: Resgen教程
EN

Stack Overflow用户
提问于 2010-09-05 05:04:14
回答 1查看 3.3K关注 0票数 1

首先,我有RFMRFM,我试图跟踪几个站点,但我不能理解资源管理器的概念。

请有人向我解释一下如何生成一个类似于VS的资源管理器。

例如,如果我从命令行用VBC编译,我可以看到我的所有资源文件。

vbc /t:exe myfile.vb /res:res1 /res:res2

代码语言:javascript
复制
Dim a as Assembly = Assembly.GetExecutingAssembly()
For Each i as string in a.GetManifestResourceNames()
    Console.writeline(i)
Next i

res1 res2

如果我使用VS IDE进行编译,我只会看到:

myprogram.Resources.resource

如何从命令行手动创建资源管理器,以便像使用VS那样使用资源管理器?

代码语言:javascript
复制
Dim CurrentResourceManager As New ResourceManager(_
"myprogram.Resources", CurrentAssembly)
Dim CurrentResourceSet As ResourceSet = CurrentResourceManager.GetResourceSet( _
CultureInfo.CurrentCulture, True, True)

当我尝试使用resgen时,它会抱怨我的文件扩展。

C:...>resgen image.bmp myfile.Resource.resource源 ResGen : error RG0000:名为"image.bmp“的文件没有已知的扩展名。托管资源文件必须以.ResX、.txt或.resources结尾。

在手册中,它规定对图像使用雷声,但我不认为这在VS2008中是可用的。我被卡住了。

更新:发现如下:http://msdn.microsoft.com/en-us/library/ekyft91f(VS.80).aspx解释了如何编写ResX文件。似乎是一个可重复的过程。我不知道他们为什么不包括一个带有visual的实用程序来创建它。

我试图使用ResourceWriter的示例。Resgen在使用MS提供的ResourceWriter类时呕吐。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-09 17:39:32

生成文件的简化版本。我已经删除了公共令牌和架构映射。架构映射是在创建/修改这些文件时提供帮助的。为了演示和简单起见,我把它去掉了。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<root>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral</value>
  </resheader>
  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral" />
  <data name="mylibrary" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>Resources\mylibrary.dll;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral</value>
  </data>
  <data name="mytext" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>Resources\mytext.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral</value>
  </data>
</root>

对于每种类型,字节或字符串包括以下数据。其中,名称是要访问它的名称,而值是eitehr相对路径或硬路径:

代码语言:javascript
复制
<data name="mytext" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>Resources\mytext.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral</value>
<data>

将资源编译为单个资源管理器文件,并将其包括在项目中。

代码语言:javascript
复制
resgen /compile myrex.resx

vbc /t:exe myprogram.vb /res:myresx.resource
csc /t:exe myprogram.cs /res:myresx.resource

您必须在程序中创建一个资源管理器来访问这些文件。如果您想要一个强类型的资源管理器,您必须从项目内部遵循Resource.Designer类并修改该文件。如果您想要一个简单的资源管理器,只需使用GetString或GetBytes。

代码语言:javascript
复制
Dim rm As New ResourceManager("rmc", [Assembly].GetExecutingAssembly())
day = rm.GetString("mytext")
o = rm.GetObject("mylibrary.dll")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3645077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档