私はリソース ファイルにまったく慣れていませんが、アプリケーションをクリック ワンスとしてデプロイする必要があり、それはすべての外部ファイル (画像、.ini ファイルなど...) を無視しているようです。それを理解しようとすると、リソースファイルを適切に使用する方法を学べると思いました。
SO を検索した後、多くのコードを見つけ、リソース ファイルを作成しました。これまでのところ、文字列しか含まれていませんが、もっと簡単になると思いました!? ああ...
したがって、DLL (ValhallaLib.dll) と、リソースを処理するための次の 2 つの関数を用意しました (これらの関数は、静的なヘルパー クラス内に保持され、ランダムではあるが有用な関数がすべて存在します)。
public static Bitmap getImageByName(string imgName)
{
System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
string resName = asm.GetName().Name + ".Properties.Resources";
var rm = new System.Resources.ResourceManager(resName, asm);
return (Bitmap)rm.GetObject(imgName);
}
public static string getStringByName(string var)
{
System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
string resName = asm.GetName().Name + ".Properties.Resources";
var rm = new ResourceManager(resName, asm);
return rm.GetString(var);
}
そして、私はそれらを簡単に呼び出そうとしています:
CHelpers.getStringByName("db_host_address");
さて、MissingManifestException を取得する以外に... 私の問題は、私が何を resName
すべきか分からないことです (そして、まっすぐな答えを見つけることができないようです!!)。私のリソース ファイルの名前は次のとおりStringResource.resx
です。
誰でもガイダンスを提供できますか?
私が試した更新global::ValhallaLib.StringResource
- しかし、それは私が求めているものでもありません。
更新 2 解決しました。私はそれをうまく動かすことができました:
public static string getStringByName(string var)
{
System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
string resName = asm.GetName().Name + ".Properties.Resources";
var rm = new ResourceManager("ValhallaLib.StringResource", asm);
return rm.GetString(var);
}
なぜそんなに複雑だと思ったのかわかりません。2時間くらい寝てたからかな。
それでも試した人に乾杯:)