質問

最初に私が持っています RFMRFM そして、私はいくつかのサイトを追跡しようとしましたが、リソースマネージャーの概念を把握することはできません。

誰かが私に、VS IDEのリソースマネージャーと同様のリソースマネージャーを生成する方法を説明してもらえますか。

たとえば、コマンドラインからVBCをコンパイルすると、すべてのリソースファイルが表示されます。

VBC /T:exe myfile.vb /res:res1 /res:res2

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 IDEと同じようにリソースマネージャーを使用できるようにするにはどうすればよいですか?

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:エラーRG0000:「Image.BMP」という名前のファイルには既知の拡張機能がありません。管理されたリソースファイルは、.resx、.txt、または.resourcesで終了する必要があります。

マニュアルでは、使用することが記載されています resxgen 画像用ですが、VS2008で利用できるとは思いません。ハマった。

更新:これを見つけました: http://msdn.microsoft.com/en-us/library/ekyft91f(vs.80).aspx resxファイルの書き込み方法について説明します。繰り返し可能なプロセスのようです。なぜ彼らがそれを作成するためにビジュアルスタジオを備えたユーティリティを含めないのか分かりません。

ResourceWriterの例を使用しようとしました。 Resgenは、MS提供されたResourceWriterクラスを使用してPukedしました。

役に立ちましたか?

解決

Visual Studios Resx生成ファイルの簡素化されたバージョン。パブリックトークンとスキーママッピングを削除しました。スキーママッピングは、これらのファイルを作成/変更するときに支援することです。デモンストレーションとシンプルさのために、私はそれを剥ぎ取りました。

<?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>

各タイプのバイトまたは文字列には、次のデータが含まれています。名前はあなたがそれにアクセスしたい名前であり、価値は相対的またはハードパスです。

<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>

リソースを単一のリソースマネージャーファイルにコンパイルし、プロジェクトに含める

resgen /compile myrex.resx

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

これらのファイルにアクセスするには、プログラムにリソースマネージャーを作成する必要があります。強く入力されたリソースマネージャーが必要な場合は、プロジェクト内からResource.designerクラスに従って、そのファイルを変更する必要があります。シンプルなリソースマネージャーが必要な場合は、GetStringまたはGetBytesを使用してください。

Dim rm As New ResourceManager("rmc", [Assembly].GetExecutingAssembly())
day = rm.GetString("mytext")
o = rm.GetObject("mylibrary.dll")
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top