質問
最初に私が持っています RFM と RFM そして、私はいくつかのサイトを追跡しようとしましたが、リソースマネージャーの概念を把握することはできません。
誰かが私に、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")