none
Visual Studio 「作成されたフォルダやファイルの名前をすべて変更したい。」 RRS feed

  • 質問

  • 最近、Visual StudioでC#のプログラムを作り始めたところで、初心者です。

    新しいプロジェクトで名前を「test1」にして、ビルドしました。

    フォルダ「test1」の中に、ファイル 「test1.sln」とフォルダ 「test1」が作成され、その中にファイル 「test1.csproj」とフォルダ「bin」とフォルダ「obj」などが作成され、その中にフォルダ「Debug」や「Release」が作成され、さらにその中に 「test1」という名前がついた複数のファイル(exe,exe.config,pdb,vshost.exe,vshost.exe.confug,vshost.exe.manifest,csproj.FileListAbsolute.txt,GenerateResource.Cashe,csprojResolveAssemblyReference.cashe,Form1.resources,Properties.Resources.resources)が作成されます。

    そこで「test1」という名前がついたフォルダやファイルをすべて「test2」に変更したいのですが、どのようにすればよいかお教えください。

    よろしくお願いいたします。

    2013年9月16日 13:58

回答

  • trapemiyaさん

    うまくいきました。

    ご丁寧な回答、ありがとうございます。

    今後ともよろしくお願いします。

    • 回答としてマーク T-Kazu 2013年9月18日 9:02
    2013年9月18日 9:02

すべての返信

  • 簡単に変更する方法は無いと思います。

    ソリューションエクスプローラーでソリューションとプロジェクトの名前を test2 に変更する。

    プロジェクトをソリューションか外す

    Windows のエクスプローラーでプロジェクトのフォルダの名称を test2 に変更する

    ソリューションに test2 プロジェクトを追加する。

    こんな感じかな。

    2013年9月16日 14:39
  • ソースコードは(特にC#では)ほとんど全てテキストファイルです。

    新しく希望する名称でプロジェクトを作成し、必要な内容をコピーしてみては? その方が記述されている各ファイルの中身についても理解が深まります。

    2013年9月16日 15:03
  • test2というソリューションとプロジェクトを作成し、ソリューションエクスプローラでtest2プロジェクトを右クリックして、「追加」 → 「既存の項目」で、T-Kazuさんが作成されたファイル(例えばForm1.csなど)を全てtest2プロジェクトに追加されるのが、手間ですが確実な方法ではないかと思います。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2013年9月16日 15:18
    モデレータ
  • ご回答、ありがとうございます。

    「追加」 → 「既存の項目」で、test1のForm1.csをtest2プロジェクトに追加しても、test1でForm1に配置したボタンなどのコントロールが現れないのですが。

    また、追加しなければならないのはForm1.cs以外にどのようなファイルがありますか。

    よろしくお願いいたします。

    2013年9月17日 0:50
  • すみません。説明不足でした。
    例えばForm1というフォームの場合ですと、Form1.cs、Form1.designer.cs、Form1.resxの3つをtest2プロジェクト内のどこか適当なフォルダにコピーし、「追加」 → 「既存の項目」で、Form1.csのみ追加すればOKです。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/


    2013年9月17日 8:45
    モデレータ
  • trapemiyaさん

    ありがとうございます。

    追加するファイルはこれ以外にもありますか。program.csやAPP.configや、est2.csprojは追加しなくてもよろしいですか。

    よろしくお願いいたします。

    2013年9月18日 6:17
  • ここはExpress Editionのフォーラムであり、ご質問内容から、あまり大規模なプロジェクトではない、かつVisual Studioのいろいろな機能を使っていないと勝手に想定していましたが、そうではないのでしょうか?
    program.cs, app.config, test2.csprojはtest2プロジェクトを作成するとtest2プロジェクト用に自動生成されるファイルです。通常は、これらはtest1からコピーして置き換える必要はなく、そのままでかまいません。逆にコピーすると動かなくなる可能性があります。ただ、もし、test1プロジェクトのプロパティの設定で、何か設定しているのでしたら、それらはapp.configに書かれていますので、その部分をうまくtest2のapp.configに組み込む必要があります。しかし、この設定の数が少ないのであれば、test2のプロジェクトのプロパティの設定で、もう一度手動で設定する方が確実でしょう。

    プロジェクト名の変更を100%自動的、かつ確実に行う方法は存在しないと思いますので、この辺りの微調が発生する場合があります。ただ、できるだけテキストファイルを直接編集する方法を取らない方が、トラブルの発生を防ぐ上で好ましいと思います。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2013年9月18日 6:46
    モデレータ
  • trapemiyaさん

    ご丁寧な回答、ありがとうございます。

    Form1.cs、Form1.designer.cs、Form1.resxの3つをtest2プロジェクト内のどこか適当なフォルダにコピーし、「追加」 → 「既存の項目」で、Form1.csのみ追加したあと、置き換えたあと、ビルドし直しましたら、以下のメッセージが出ました。

    エラー 1  型または名前空間名 'Form1' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 

    そこで、さらにprogram.csを追加して置き換えたあと、ビルドし直しましたら、うまくいきました。

    program.csも追加する必要がありました。

    program.csも追加して既存のファイルと置き換えなければならないのは、どのような場合なのでしようか。

    よろしくご指導ください。お願いいたします。

    2013年9月18日 7:36
  • program.cs内には、アプリケーションを実行した際に最初に起動するフォーム名が書かれています。
    例えば、

    Application.Run(new Form1());

    です。Form1は良いのですが、program.csの名前空間が、test2になっていたため、Form1.csの名前空間であるtest1と違っていたため、
    Application.Run(new Form1());
    におけるForm1を見つけることができず、コンパイルエラーになっていたのでしょう。
    つまり、
    program.cs

    namespace test2
    {
        static class Program
        {
            /// <summary>
            /// アプリケーションのメイン エントリ ポイントです。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
    }

    Form1.cs

    namespace test1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
                    ・
                    ・
                    ・
        }
    }

    となっており、namespaceがtest1とtest2で違うためでしょう。
    これを修正するには、要はnamespaceを一致させれば良いわけですが、program.csのnamespaceをtest2に戻し、Form1.csのnamespaceをtest2にするのが素直でしょう。
    namespaceを変更するには、namespace test1とあれば、test2にキャレットを持っていき、そこで右クリックしてリファクターで「名前の変更」で行って下さい。そうすると、関連するところもVisual Studioが自動的に変更してくれます。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク T-Kazu 2013年9月18日 8:54
    • 回答としてマークされていない T-Kazu 2013年9月18日 8:55
    • 回答としてマーク T-Kazu 2013年9月18日 8:58
    • 回答としてマークされていない T-Kazu 2013年9月18日 9:00
    2013年9月18日 7:55
    モデレータ
  • trapemiyaさん

    うまくいきました。

    ご丁寧な回答、ありがとうございます。

    今後ともよろしくお願いします。

    • 回答としてマーク T-Kazu 2013年9月18日 9:02
    2013年9月18日 9:02
  • 「回答」としてマークされた投稿は、ログインしていない場合に先頭に表示される仕様になっています。
    できるだけ、役に立った投稿に回答としてマークをしていただき、他の同じ疑問・課題を抱える方にわかりやすくするようにご協力をお願いします。
    2013年9月18日 13:43
    モデレータ