あるSEのつぶやき・改

ITやシステム開発などの技術に関する話題を、取り上げたりしています。

Xamarin.Android, Fix>Error CS0145: A const field requires a value to be provided (CS0145)

Xamarin.Android で Main.axmlに Button (+id/StartButton) を追加して、以下のコードを書こうとしたところ、リソースIDのサジェスチョンがでないという現象が起きました。

_startButton = FindViewById<Button>(Resource.Id.StartButton);

上記のように、Resource.Id.StartButtonを無理にて入力してビルドしたところ以下のエラーが発生しました。

Error CS0145: A const field requires a value to be provided (CS0145)

正直意味がわからなかったのですが、どうも Resource.designer.cs にリアルタイムにリソースIDが生成されなかたことが原因の模様。

ビルドを行うと、Resource.designer.cs は確実に生成されるとのことなので、先ほどのソースコードの部分をコメントアウトしてビルドしなおし、コメントを外してビルドし直したらうまくいきました。

以下のコメントが参考になりました。

Resource.Designer.cs はビルド時に自動生成されます。(ビルド前に生成されることもあるみたいですが、ビルド時は確実に生成されます。) Activiry.cs の FindViewById のコードを一度コメントにして、Main.axml にコントロールを追加した時点で一度ビルドすると、Resource.Designer.cs が確実に追加されると思います。その後コメントを解除してビルドすると恐らく大丈夫かと思います。

https://teratail.com/questions/106206