C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[13]: VS2010のintellisense


(過去ログ 108 を表示中)

[トピック内 15 記事 (1 - 15 表示)]  << 0 >>

■64062 / inTopicNo.1)  VS2010のintellisense
  
□投稿者/ howling (41回)-(2012/11/06(Tue) 19:04:30)

分類:[C#] 

こんばんわ。

些細なことで質問します。すみません…。

今回はソースコードの質問ではないのですが、
VS2010でC#を使った場合で、かつ特定の場合にintellisenseが出ないのです。

出し方は簡単です。
「foreach」を書いて、その中に何かを書こうとするだけ。
丸かっこ開「(」を書いた瞬間に丸かっこ閉「)」が書かれるため、
正確には「foreach()」の中に何か書こうとすると出ないようです。

「foreach()」となった後、丸かっこ閉「)」を消して「foreach(」とすると復活します。
for文だとそんな事は起きません。

そこで、オートフォーマットが問題なのかな?と思い、
ツール->オプション->テキストエディター->C#->書式設定
あたりを探ったのですが、丸かっこに関する記述は無さそうでした。

丸かっこ開「(」を書いた瞬間に丸かっこ閉「)」が書かれる機能を中止する方法、
もしくはintellisenseを丸かっこでくくられている場合でも出すことはできないのでしょうか?

ちなみに、VS2010 SP1です。
これまでVS2010を入れてはいたものの、VS2008のプロジェクトを開いていたため気づきませんでした…。
VS2012なら互換することも無くなるらしいですし、2012にしとけば…!と思ったわけですが。

どなたか知りませんでしょうか。
宜しくお願い致します。
引用返信 編集キー/
■64069 / inTopicNo.2)  Re[1]: VS2010のintellisense
□投稿者/ Azulean (59回)-(2012/11/06(Tue) 22:43:05)
No64062 (howling さん) に返信
> 「foreach」を書いて、その中に何かを書こうとするだけ。
> 丸かっこ開「(」を書いた瞬間に丸かっこ閉「)」が書かれるため、
> 正確には「foreach()」の中に何か書こうとすると出ないようです。

foreach () だと IntelliSense に反応しないことは手元でも確認しました。
不具合かもしれませんが、この手のものは残念ながら修正されないと思われます。

ところで、( を書いたとたん、) が出るのは拡張機能を入れているからでは?
それを切れば回避できるとはいえ、別の面で不便かもしれませんね。

// ( ) 補完は Productivity Power Tools の Automatic Brace Completion などかな。
// それであればオプションで個別に ON/OFF できますが。


> ちなみに、VS2010 SP1です。
> これまでVS2010を入れてはいたものの、VS2008のプロジェクトを開いていたため気づきませんでした…。
> VS2012なら互換することも無くなるらしいですし、2012にしとけば…!と思ったわけですが。

「互換する」という表現がよくわかりません。
プロジェクトファイルの互換性があるというとらえ方なら、2008 -> 2012 間はなかったように思うのですが。
引用返信 編集キー/
■64077 / inTopicNo.3)  Re[2]: VS2010のintellisense
□投稿者/ howling (43回)-(2012/11/07(Wed) 10:32:17)
Azuleanさん

ご返信頂きありがとうございます。
以下、返信を引用にて失礼させて頂きます。

> foreach () だと IntelliSense に反応しないことは手元でも確認しました。
> 不具合かもしれませんが、この手のものは残念ながら修正されないと思われます。

まぁ…2年も放置されてるわけですし、そうでしょうね…。
そこは諦めています(苦笑

> ところで、( を書いたとたん、) が出るのは拡張機能を入れているからでは?
> それを切れば回避できるとはいえ、別の面で不便かもしれませんね。

なんと!
VS2010をインストールして、SP1入れたことしかしていないのですが…。
VS2008インストール済みの状態に入れたので、何かおかしなことでもできたのでしょうか…。
結構不便なんですよね。実際書くには書くわけですけど…。

> // ( ) 補完は Productivity Power Tools の Automatic Brace Completion などかな。
> // それであればオプションで個別に ON/OFF できますが。

ちょっと調べてみます。
Brace関係ならオプションにもあったと思うのですが、
それって中かっこ「{}」のことかなーと思いこんでいました。
いじってみます。

> 「互換する」という表現がよくわかりません。
> プロジェクトファイルの互換性があるというとらえ方なら、2008 -> 2012 間はなかったように思うのですが。

2008のプロジェクトを開いてもプロジェクトの互換が発生せず、
2012の機能を活用できるものだとばかり思っていました。
確かに2010の時点でvcxprojとかxがつきましたね…!
Excelとかのxlsxみたいな気持ちで嫌だったんですが(笑

引用返信 編集キー/
■64083 / inTopicNo.4)  Re[3]: VS2010のintellisense
□投稿者/ とっちゃん (15回)-(2012/11/07(Wed) 11:22:56)
とっちゃん さんの Web サイト
No64077 (howling さん) に返信
> 確かに2010の時点でvcxprojとかxがつきましたね…!

ここだけ。

これって、C++(C++/CLIを含む)だけで、C#などは今までと同じ拡張子ですよ。

C++は、2008までは VCBuild という、MSBuild の改変版を使っていましたが
2010からは、MSBuild に VCBuild の機能が盛り込まれたので、統一されています。
ファイルの内容も異なるので、拡張子も変えたのだと思いますよ。

引用返信 編集キー/
■64085 / inTopicNo.5)  Re[4]: VS2010のintellisense
□投稿者/ howling (44回)-(2012/11/07(Wed) 11:39:17)
とっちゃんさん

ご返信ありがとうございます。

> これって、C++(C++/CLIを含む)だけで、C#などは今までと同じ拡張子ですよ。

なるほど、そういえばC#の方は何も新しい物ができていない…。
そういうことだったのですか…。
ということは、もしかしてC#の場合なら、
VS2008をインストールしたことのないPCで、VS2008のプロジェクトをVS2012で読み込んでも互換ウィザードは働かない…?
いやまぁ、VS2010を買われてしまったので、VS2012は遠い存在になってしまったので良いのですが…(苦笑
引用返信 編集キー/
■64090 / inTopicNo.6)  Re[5]: VS2010のintellisense
□投稿者/ howling (48回)-(2012/11/07(Wed) 12:27:37)
Azuleanさん

早速見てみました。
確かに、ツール->オプションにProductivity Power Toolsの文字が!!
どうも、VSSを使用している(結構バグ多くて嫌なんですがねぇ。好んで使われているようです)ので、
最新バージョンのファイル一式を更新した結果、入った?ようです。

検索と置換機能がこんなのになったのかVS2010は!!
とか恨んでた部分もあったので、非常に助かりました。
もう機能ごと要らないんじゃ?と半分思っているのですが、
また要らないと思った時に切ればいいのかなーと思い、放置しておきました。

大変助かりました。
ありがとうございました。
解決済み
引用返信 編集キー/
■64105 / inTopicNo.7)  Re[6]: VS2010のintellisense
□投稿者/ Azulean (61回)-(2012/11/07(Wed) 22:33:41)
No64077 (howling さん) に返信
>>「互換する」という表現がよくわかりません。
>>プロジェクトファイルの互換性があるというとらえ方なら、2008 -> 2012 間はなかったように思うのですが。
>
> 2008のプロジェクトを開いてもプロジェクトの互換が発生せず、
> 2012の機能を活用できるものだとばかり思っていました。

この部分に使う単語としては、「変換」、あるいは「アップグレード」ではないでしょうか?
「互換」を改めて調べたところ、名詞ということなので「する」はつながらないはずです。
http://dictionary.goo.ne.jp/leaf/jn2/76381/m0u/%E4%BA%92%E6%8F%9B/


No64090 (howling さん) に返信
> 確かに、ツール->オプションにProductivity Power Toolsの文字が!!
> どうも、VSSを使用している(結構バグ多くて嫌なんですがねぇ。好んで使われているようです)ので、
> 最新バージョンのファイル一式を更新した結果、入った?ようです。

ソースコードを取得するような感覚では、勝手に入りません。
明示的にインストールしなければ入らないので、よっぽど強引なスクリプトでもない限り、あなた自身か、その環境を使うどなたかがインストールしたのでしょう。
解決済み
引用返信 編集キー/
■64110 / inTopicNo.8)  Re[7]: VS2010のintellisense
□投稿者/ yukihiro (1回)-(2012/11/08(Thu) 10:26:14)
解決済みのところ横からすみません。

今までまったく気にならずに使ってましたが、
確かに自分の環境でも再現しました。

別解提案ですが、foreachと打ってTabキーを2回押すのではいかがでしょうか。
「fore」で始まる識別子がスコープになければ「fore」+Tab2回でOK。

foreachコードスニペットが機能して雛形が入力されます。
この状態なら正常にIntelliSenseが機能します。

慣れればタイプ量も減らせるのでいいのでは。

引用返信 編集キー/
■64111 / inTopicNo.9)  Re[8]: VS2010のintellisense
□投稿者/ howling (52回)-(2012/11/08(Thu) 10:31:35)
yukihiro さん

なるほど、その解決方法はアリですね!
まぁ、慣れ次第ってことですね。
勝手にカッコが閉じられなければOKってことでw
情報提供どうもです。
解決済み
引用返信 編集キー/
■64112 / inTopicNo.10)  Re[9]: VS2010のintellisense
□投稿者/ 魔界の仮面弁士 (83回)-(2012/11/08(Thu) 10:50:52)
No64111 (howling さん) に返信
> なるほど、その解決方法はアリですね!

自分も foreach はスニペットで書いています。
さらに Tab を押せば、型名や変数名の箇所が選択されますし。


> まぁ、慣れ次第ってことですね。

慣れのほか、個人の好みもあるのでしょうね。
同僚の一人は、コードスニペットを余計なお世話と感じているようですし。


> 勝手にカッコが閉じられなければOKってことでw

当方の C#2010 (VS2010 Ultimate)では再現しなかったので、不思議に思っていました。
そもそも閉じ括弧が補完されたりはしないという。
標準以外のアドインを導入していないせいでしょうかね。
(Productivity Power Tools を導入すれば再現できるのかな?)
解決済み
引用返信 編集キー/
■64113 / inTopicNo.11)  Re[10]: VS2010のintellisense
□投稿者/ howling (53回)-(2012/11/08(Thu) 11:05:16)
2012/11/08(Thu) 11:45:40 編集(投稿者)

魔界の仮面弁士 さん

> 自分も foreach はスニペットで書いています。
> さらに Tab を押せば、型名や変数名の箇所が選択されますし。

普段使っていないのが正直なところですね…。
スニペットも使う部分次第というか、
まずどのキーワードにスニペット機能があるのか知らないというところでしょうね。
propくらいしか使ったこと無かったです。
それもそれで、今はほぼコピペか手打ちでやってますが…。

> 慣れのほか、個人の好みもあるのでしょうね。
> 同僚の一人は、コードスニペットを余計なお世話と感じているようですし。

余計なお世話ではないのですが、
書き方を忘れた時なんかにいいかなぁと…。
プロパティも自動プロパティがもっと好きなら良かったのですがw

> (Productivity Power Tools を導入すれば再現できるのかな?)

おそらく再現します。
が、「おー、出た出た」以上の何者でもないかとw
オススメはしません。
解決済み
引用返信 編集キー/
■64120 / inTopicNo.12)  Re[11]: VS2010のintellisense
□投稿者/ 魔界の仮面弁士 (84回)-(2012/11/08(Thu) 12:00:09)
2012/11/08(Thu) 12:01:25 編集(投稿者)

No64113 (howling さん) に返信
> まずどのキーワードにスニペット機能があるのか知らないというところでしょうね。

コードエディタを右クリックして、[スニペットの挿入...]などから調べられますね。


> propくらいしか使ったこと無かったです。

あとは、ctor にもお世話になっているかな、私は。
長いクラス名のコンストラクタを作成するときに使っています。
(VB なら、コンストラクタ名は Sub New 固定ですむのですけれども)


> それもそれで、今はほぼコピペか手打ちでやってますが…。

ちなみに prop スニペットや propg スニペットは、2005 と 2008以降 では異なっていたりします。
(2008 以降では自動実装プロパティに変更されている)

ただ、2008 以降の propg は、コンポーネント作成時の障害になるので使っていません。
オーバーライド可能なプロパティを用意する場合、getter と setter でスコープが異なると、
その DLL を VB から使う場合に都合が悪いという理由からです。C# から使う分には良いのですが。


prop の方は使いますが、標準の prop だけでは機能不足な場面もあるので、
自作した独自の propdef スニペットも併用しています。
http://www.vb-user.net/junk/CSharp.Property.snippet.zip
(My Documents の Visual Studio ????\Code Snippets\Visual C#\My Code Snippets\ に配置)

Form に貼って使うタイプのコンポーネントやコントロールにプロパティを用意する場合、
 ・{PropertyName}Changed イベントの実装
 ・ShouldSerialize{PropertyName} メソッドもしくは DefaultValue 属性の付与
 ・CategoryAttribute、DescriptionAttribute など
も実装した、仰々しいプロパティコードを書きたい場面があるので。
解決済み
引用返信 編集キー/
■64128 / inTopicNo.13)  Re[12]: VS2010のintellisense
□投稿者/ yukihiro (2回)-(2012/11/08(Thu) 14:11:50)
あっと、誤解させちゃった気がするので補足します。

当方もProductivity Power Toolsの入っていない環境(VS2010 Professional SPなし)で試して「再現」したと言いました。
「foreach()」と閉じカッコまで手で入力してカッコの中にキャレットを戻し、
Ctrl+SpaceでIntelliSenseが出てこないことを確認したのでした。

なので、厳密にはhowlingさんとは違うのですが、
IntelliSenseが出てこないという意味での「再現」でした。


ちなみに私もスニペットはあんまり使いこなしていないのですが、
魔界の仮面弁士さんのお話がすごく参考になりました。

ちょうどWPFのDependency Propertyの実装が面倒だなと思っていたところで、
探すとpropdpというスニペットが標準であるということがわかりました。

自作スニペットも調べると意外と簡単にできそうなので、
機会があればやってみます。

ありがとうございました。

引用返信 編集キー/
■64137 / inTopicNo.14)  Re[12]: VS2010のintellisense
□投稿者/ howling (59回)-(2012/11/08(Thu) 18:40:16)
魔界の仮面弁士 さん

> コードエディタを右クリックして、[スニペットの挿入...]などから調べられますね。

なるほど、結構あるんですね…。
1つ1つは見ていかないといけないですが、少しずつ見ていこうかな…。
まだ今のところ、そこまで作業的に忙しくないので、コーディング速度まで問われないのですが、
いつまでそう言ってられるかわからないですしね…。

> ただ、2008 以降の propg は、コンポーネント作成時の障害になるので使っていません。
> オーバーライド可能なプロパティを用意する場合、getter と setter でスコープが異なると、
> その DLL を VB から使う場合に都合が悪いという理由からです。C# から使う分には良いのですが。

こんなのあったんですね…。
いや、普段使うとすればpublicのみだったりするので何とも言えませんが、
本当はprivateでメンバを定義していたとしても、
アタッチしている部分を探す時に、ブレークポイントを仕掛けられるようにするため、
プロパティを介した方が良いのかもしれない…と思う時はあります。
が、実際のところそのレベルを要求されるのはバグが出た時のみなので、
めんどくさがり、という理由でやってません(苦笑

> http://www.vb-user.net/junk/CSharp.Property.snippet.zip

うおぉぉぉ…コードスニペットって自作できるんですね…!
今回、PropertyGridViewでTypeConberterやEditorなど多用していましたので、
尚の事コピペでやってたんですが…こういうの作れば良かったのか…!
さすがですね!
(いやー…ランキングでコメント数を見ていて、自分が上位にいて、周りが有名人ばかりで…。
 私はあんまり役に立ててないし書くべきじゃないんじゃないかと、たまに悩むのですよ)

ありがとうございました。ゆっくりコード見ておきます!
引用返信 編集キー/
■64138 / inTopicNo.15)  Re[13]: VS2010のintellisense
□投稿者/ howling (60回)-(2012/11/08(Thu) 18:43:34)
yukihiroさん

バグはバグなので、確かに再現はするんでしょうね…。
結果的に、バグが出やすい環境だったのを出にくい環境にして解決、と言っているので、
それは解決じゃないじゃん、と言われたら全くその通りです。(でも解決しますけどね!)

私も魔界の仮面弁士さんの話はすごく参考になりました。
まぁ、色んな質問掲示板でお見かけする1人ですからね…(笑
いつかそういうレベルになる日が…来ないなぁ…。

というわけで解決にします。
お返事ありがとうございました!



解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -