2012年9月14日金曜日

プロフィールの画像変えました

ずっとデフォルト画像でほっといたんですが、いくらなんでもあんまりかと思ってようやく変えましたw
自分で描けばいいんだけど、めんどくさかったのでw化け猫アイコンメーカーさんのお世話になりました。パーツを組み合わせていくと猫の顔アイコンが完成……って有名どころなので説明とかいまさらですがw

化け猫アイコンメーカー

ブログのアバターなどに使用するのはOKということなので、これは大丈夫ですよね。その他いろいろに利用可能ですが、商用や再配布は不可なので、サイトの説明を参照の上、正しく利用させていただきましょう。

なお「月の輪猫」なので月の輪熊的に首のとこに三日月模様がある想定なんですが、アイコンは首から上なので見えてませんw

2012年8月29日水曜日

プロジェクトに追加したリソースが参照できない


慣れない Visual Studio 2010 でVBの開発をしています。既存プロジェクトの修正が多くて、開発環境がバラバラw

ボタンに画像を貼るので、画像をリソースに追加。ボタンコントロールのプロパティで Image の参照ボタン[...]をクリックすると「リソースの選択」ダイアログが表示されるので、プロジェクトリソースファイルを選択。一覧から画像を選択……と思ったら、さっき追加したはずの画像が表示されてないので選択できない。うーむ。

ソリューションエクスプローラーでResourceフォルダを確認すると、貼り付けたかった画像ファイルはちゃんと表示されているし、ダブルクリックすると内蔵の画像エディタ(?)で開きます。

ここで例によってググるw なんかヘルプ検索するよりググったほうが解決策が見つかりやすい……。

どうやらそもそもの「画像をリソースに追加した」つもりでいたところからして間違っていたようですw
追加したつもりの手順はこう。

ソリューションエクスプローラに表示されている、プロジェクトのResourceフォルダに画像ファイルをコピー
(Windowsのエクスプローラから当該フォルダに画像ファイルをコピー)
ソリューションエクスプローラのResourceフォルダにファイル名が表示されたけど無地のアイコン表示
右クリックして[プロジェクトに含める]を選択
アイコンが画像ファイルのものに変わる

これだけじゃ「リソースの選択」ダイアログから選択できないのでした。
(これはこれでプロジェクトに関連するファイルの管理としては必要だと思うけど)
以下、追加手順。

プロジェクトのプロパティで[リソース]タブを選択
(画像の追加ができそうにない画面が表示されるけど、これは文字列リソースの画面)
左上の[文字列]と表示されているドロップダウンリストから[イメージ]を選択
イメージ(画像)の一覧が表示される
[リソースの追加]のドロップダウンリストを開いて[既存のファイルの追加]を選択
([リソースの追加]はボタンとしてクリックできるけど、ここでクリックすると新規リソースの追加になってしまうので、今回はしない)
ファイル選択ダイアログが表示されるので、追加したいファイルを選択
(ここでさっきコピーしておいたResourceフォルダのファイルを選択するとよい)

これで「リソースの選択「ダイアログで、プロジェクトリソースファイルの一覧にファイルが表示されるようになります。

ただしファイル名に注意。リソースに追加されると、通常、リソースの名前(Name プロパティ)はファイル名になりますが、リソース名に使用できない名前があり、追加時にエラーが出たり、名前が自動的に変更されたりします。

「~」が含まれているとNG。他にもあるかも。
ファイル名 hogehoge~hoge.png の画像を追加してみると、

---------------------------
Microsoft Visual Studio
---------------------------
リソース 'hogehoge~hoge' の名前には 1 つまたは複数の無効な文字 '~' が含まれているので、有効な識別子として使用できません。これらの文字を削除するか別の文字に置き換えてからもう一度やり直してください。
---------------------------
OK   ヘルプ
---------------------------

とエラーダイアログが表示されるので、ファイル名を変更してからやり直し。

エラーは出ないけどファイル名が自動的に変更されるのは次の場合(これも、他にもあるかも)。

「-」(ハイフン)、「.」(ピリオド)、空白→「_」(アンダースコア)に置き換えられる
(ピリオドは拡張子の区切り以外に使用されている場合。例:hoge.hoge.png → hoge_hoge.png)
数字で始まるファイル名→先頭に「_」(アンダースコア)が追加される
既に同名のリソースがある場合→末尾に1(以下連番)が追加される

2012年8月24日金曜日

データセットデザイナからクエリを編集できない

Visual Studio 2010 の VB.NET でデータベースを使ったプロジェクトを修正中。他の開発環境(他のPC)で他の人が修正したプロジェクトのソースを自分の開発環境に持ってきました。ビルドは通るし実行もできるんだけど、テーブルアダプタのクエリの中身を見ようと、データセットデザイナのテーブルアダプタ右クリックから[構成]を選択すると、下のようなエラーダイアログが出て、クエリ編集画面が開きません。


---------------------------
エラー
---------------------------
TableAdapter V_HOGEHOGE の構成 に失敗しました。
オブジェクト 'MySettings' の接続 'HogehogeConnectionString1' が見つかりませんでした。接続文字列がアプリケーション設定に見つからなかったか、または接続文字列に関連付けられているデータ プロバイダーが読み込めませんでした。
---------------------------
OK
---------------------------

プロジェクトのプロパティから設定を見ても、HogehogeConnectionString というのはあるけど ~1 というのは無し。修正作業した人に聞いてみると、件のテーブルアダプタは修正版なんだけど、ソース(データベースのビュー V_HOGEHOGE)を大幅修正したのでいったん削除して同名のものを作りなおしたらしい。そのときには既存の接続名(HogehogeConnectionString)を選択しているはずなんだけど、なぜか ~1 という名前になってしまったようです。(でもあとで聞いたら本人の開発環境でも前述のエラーが出てたそうなのでなんかおかしいんですけどw)
他のデータアダプタは差し替えていないので、エラーが出ずにクエリの構成画面は表示されます。

いつものようにいろいろググったんだけどよくわからないw
~1 の設定がないのを怒られているので、その設定を追加してやるのも手ですが、なんかやだし……。
試しに HogehogeConnectionString と同じ内容で名前を HogehogeConnectionString1 とした接続設定を一度作成してみましたが、これだとデータセットデザイナの構成は実行できます。これを追加しなくてもプログラム自体のビルド・実行はできるので、データセットデザイナだけの問題のようです。
ん、ということは、データセット関連のファイルだけ修正すればいいのか。

(追記:以下ダラダラ書いてますがもっと簡単な方法があるのに気付きましたw 手っ取り早く知りたい人は途中すっ飛ばしてこの投稿の一番下を読んでねw)

現在のプロジェクトを対象に HogehogeConnectionString1 を検索してみると、データセットの xsd ファイルのコードにヒットします。データセット名が ds だとすると ds.xsd ファイル。これを普通にソリューションエクスプローラーからダブルクリックで開くとデータセットデザイナ画面が開きますが、実体はテキストファイルなわけですね。
ソリューションエクスプローラから ds.xsd を右クリック→[ファイルを開くアプリケーションの選択]から「XML(テキスト)エディター」などを選択すると、検索結果からでなくても直接開くことができます。

このコードの最初の方の <Connections> のところに、

<Connection AppSettingsObjectName="MySettings" AppSettingsPropertyName="HogehogeConnectionString1" ~(以下略)


みたいなのがあるのでこの行を削除。
同じところに元の名前の HogehogeConnectionString の行もあると思いますがもちろんこれは削除しないw

あとは検索でヒットした HogehogeConnectionString1 の部分を HogehogeConnectionString に変えて保存すればOK。データセットデザイナでクエリの編集ができるようになりました。

(補足)
調べ始めたときにはビルドで HogehogeConnectionString1 がどうとか指摘されるエラーが出たこともあったのですが、なんか再現しなくなったので詳細が書けませんw
そのエラーの箇所だけ HogehogeConnectionString に直すとビルドは通るようになったのですが、データセットデザイナの方は直らなかったので、データセットとは別のところで出てたのか? データセットのファイルだけどビルドにひっかかったのが1行だけだったので修正し足りなかったのか? 不明です。また再現したら追記しときます。

(さらに補足、というかここが本文でもいいw)
投稿直後にいろいろやってたらもっと簡単な方法を見つけたので追記しますw
データセットデザイナから V_HOGEHOGE のテーブルアダプタ V_HOGEHOGETableAdapter のクエリを右クリックして[構成]を選択してもエラーが出てクエリ編集画面が開かなかったわけですが、このとき、クエリでなくテーブルアダプタ名 V_HOGEHOGETableAdapter をクリックします。
このテープルアダプタのプロパティで Connection を見ると、上記の例ではエラーの元である "HogehogeConnectionString1 (MySettings)" になってますが、ここのドロップダウンリストを展開すると、一覧に元の(本来選択したかった)接続設定の名前 "HogehogeConnectionString (MySettings)" があるはず。これを選択すればOK! ソースコード編集しなくてすみますw 内部的には同じことをやってるんだろうけど。