回答編集履歴
4
Designer.csの自動生成について追記
test
CHANGED
@@ -93,3 +93,19 @@
|
|
93
93
|
|
94
94
|
|
95
95
|
カスタムツールの実行は面倒なので、将来的にはビルド前イベントに組み込みたいですね...
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
---
|
100
|
+
|
101
|
+
2021/05/11 追記2
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
Designer.csを自動生成するには、System.Resources.Tools.StronglyTypedResourceBuilderを使えばよいようです。
|
106
|
+
|
107
|
+
[Programmatically generate Designer.cs for resx file (ResXResourceWriter/ResXResourceReader)](https://stackoverflow.com/questions/3729255/programmatically-generate-designer-cs-for-resx-file-resxresourcewriter-resxreso)
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
ただしこれで生成したDesigner.csを、.resxと同時にプロジェクトに追加してしまうと、.resxとDesigner.csが別々のものとして認識されてしまいます(.csproj内で<AutoGen>等が付与されない等等)。なので、初回生成のときだけは.resxファイルのみを追加し、上記の通りカスタムツールを設定して自動生成し、StronglyTypedResourceBuilderは更新時のみ使うようにしたほうが(今わかっている範疇では)楽かなと思います。
|
3
フォルダに画像ファイルを追加したときの.resxアップデートについて記載
test
CHANGED
@@ -63,3 +63,33 @@
|
|
63
63
|
- ボタンのImageプロパティ等で、プロジェクトリソースファイル(P)のコンボボックスをhoge.resxにすれば、当該画像が選択でき、デザイナ上で表示される。
|
64
64
|
|
65
65
|
- 何も気にしなくてもビルドすることで画像データは.exeに埋め込まれ、.exeのみで画像が表示される。
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
---
|
70
|
+
|
71
|
+
2021/05/11追記
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
hoge.resxをプロジェクトに追加してデザイナから画像を選択すると、hoge.Designer.csが作成されます。このDesigner.csの中には画像をSystem.Drawing.Bitmapとしてリソースバイナリストリームから復元するコードが自動生成されます。
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
ここで、hoge.resxをプロジェクトに追加した**後**に、フォルダ内に画像を追加したとします。
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
この場合、hoge.resxを更新する必要があることは無論ですが、Designer.csも更新する必要があります。hoge.resxを更新してDesigner.csを更新しない場合、デザイナ上で画像を選択すること自体は問題なく行えるのですが、ビルドすると「'XXXX'に'YYYY'の定義がありません」というコンパイルエラーが発生します。
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
このコンパイルエラーを防ぐには、以下のようにします。
|
88
|
+
|
89
|
+
- ソリューションエクスプローラー上でhoge.resxのプロパティを開き、「カスタム ツール」の欄に「ResXFileCodeGenerator」と入力する。この作業はhoge.resxを追加した際の1回のみ行えばよい。
|
90
|
+
|
91
|
+
- hoge.resxを(ツールで)更新する度に、ソリューションエクスプローラー上でhoge.resxを右クリックし「カスタム ツールの実行(L)」を行う。これによりDesigner.csが作り直される。
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
カスタムツールの実行は面倒なので、将来的にはビルド前イベントに組み込みたいですね...
|
2
ソースコードのnameがなんの説明もなかったので、追加
test
CHANGED
@@ -32,6 +32,8 @@
|
|
32
32
|
|
33
33
|
{
|
34
34
|
|
35
|
+
var name = srcPathから適当に変換(リソース名となる)
|
36
|
+
|
35
37
|
var res = new ResXFileRef(srcPath,
|
36
38
|
|
37
39
|
typeof(System.Drawing.Bitmap).AssemblyQualifiedName);
|
1
ご回答くださった方の名前が間違えていたので、訂正
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
radianさんの回答からあたりをつけて、以下の記事を見つけました。
|
2
2
|
|
3
3
|
[How to use ResXResourceWriter to create correct Resx file?](https://social.msdn.microsoft.com/Forums/vstudio/en-US/c5c17781-13a9-422f-a1ec-befff6e12575/how-to-use-resxresourcewriter-to-create-correct-resx-file?forum=netfxbcl)
|
4
4
|
|