ページ 11

[C#]名前空間変更

Posted: 2016年7月04日(月) 11:38
by rute
名前空間の名称を変更する方法をご教授ください。
環境はVisual C#です。
プロジェクト名、ソリューション名ともに変更可能ですが名前空間の変更は無理でした。
コードから名前空間を適当な名前に変更したら赤線でエラーが出ます。どうすれば変更できますか?

Re: [C#]名前空間変更

Posted: 2016年7月04日(月) 15:00
by YuO
  • エラーを一つずつ消す
    赤の波線の所で[Ctrl] + [.]を押して[Enter]を押せば,using文が追加されます。
    それを繰り返せば,一応変更に対応できます。
    一部のクラス等のみ名前空間を変更する場合に使えます。
  • 名前を変更後[Ctrl] + [.]でリファクタリング
    名前の階層が変わらない場合は,これで可能です。
    名前空間が全て置き換わるため,全部のクラス等の名前空間が変更になります。
  • ReSharperCodeRushといった有償製品を使う
    両方とも名前空間の置換機能があったはずです。
  • 拡張機能を探す
    軽く探した感じでは見つかりませんでしたが無償の拡張機能があるかもしれません。
  • 自分で作る
    VSIX拡張は自分で作ることが出来ます。
    VS 2015世代だとRoslynのサポートも受けることが出来るかもしれません。
    参考記事:VS2015+RoslynによるCodeRefactoringProviderの作り方と活用法 - neue cc Preview時代の記事ですが,参考になるかと。

Re: [C#]名前空間変更

Posted: 2016年7月04日(月) 19:07
by rute
ありがとうございます。
using文はエラーを無理やり通すための文ということでしょうか?

Re: [C#]名前空間変更

Posted: 2016年7月05日(火) 11:40
by YuO
using ディレクティブは名前空間を省略して記述するための物です。
エラーを無理やり通す物ではありません。
そもそも,エラーをエラー扱いしないようにするものは,通常プログラム言語やコンパイラ等に用意されていません。

System.DateTimeやSystem.IO.StreamReaderと書くかわりに,
前もってusing System;やusing System.IO;としておくことでDateTimeやStreamReaderと書けます。
オフトピック
using ディレクティブには別名を付ける機能と静的メンバーへのアクセスにクラスの記述を不要にする機能がありますが,今回は関係ないので省略。