2009-04-14 9 views
1

私は、共通のライブラリとプロジェクトを含む基本アプリケーションをビルドし、すべてをソース管理にチェックインし、ソリューションのベースビルドをセットアップする自動化プロセスに取り組んでいます。私が1つを除いて解決した問題のほとんど。ユーザーがソリューションとプロジェクトのパスを傍受し、そのパスを変更することは可能ですか?Visual Studio - ソリューションとプロジェクトの作成時に傍受とパスを変更する

つまり、

ユーザーは、新しいプロジェクトの作成画面でC:/ Projects/App1を指定します。 ソリューションとプロジェクトは実際にC:/ Projects/App1/trunk/source/App1に保存されます

私はTFSが連続ビルドの設定方法を容易にするためにパスを変更したいと思います。私はこれ以外のほとんどの問題を解決しました。そして、これが最も簡単であるように思えます。私はIWizardクラス内で変更できるかどうかを確認しようとしましたが、これまでのところ、運はありません。どんな提案も大歓迎です。

このプロセスは、ユーザーがカスタムテンプレートを選択することによってトリガーされることを追加する必要があります。カスタムテンプレートを使用して回答がない場合は、VSアドインに切り替えます。

-Scott

+0

これを行う方法はわかりませんが、実際に成功すれば多くのデベロッパーを怒らせるつもりです。私が知っているほとんどの開発者は、コードをどのように整理したいかという点で非常に特有であり、それらのどれも同じではありません。 TFSは異なる作業ディレクトリをサポートしていませんか? – Todd

+0

ありTFSは異なる作業ディレクトリをサポートします。問題は、外部プロジェクトの参照、260文字の制限などです。自動ビルドで導入されたあらゆる種類の問題。異なる開発者が異なる方法を設定すると、継続的なビルドが中断されます(破棄される)。 – Bomlin

答えて

0

私はあなたが何をしているかわからないんだけど、そのようなことは、プロジェクトテンプレートで可能です。しかし、これがあなたのケースに当てはまるかどうかはわかりません。

を追加しました:このような何か:

<TemplateContent> 
    <Project> 
     <Folder> 
      <Folder> 
       <ProjectItem></ProjectItem 
      </Folder> 
     </Folder> 
    </Project> 
</TemplateContent> 
+0

投稿を少し修正しました。 IWizardを実装するカスタムクラスを使用するカスタムテンプレートを使用しています。私はIWizardを使っていくつかのことをすることができますが、私は保存ディレクトリを変更することはできません。 – Bomlin

+0

テンプレート記述子XMLは、テンプレートファイルをコピーする必要があるすべてのフォルダを指定します。なぜそれをそこに加えてみませんか? –

+0

これは、プロジェクト内のフォルダ構造を制御するためです。ソリューションレベルでフォルダ構造を変更する必要があります。これは複数のプロジェクトテンプレートです。 – Bomlin

1

あなたはGuidance Automation Toolkitに見SHOLD。とりわけ、これまで説明したすべてのことを行うことができるソリューションテンプレートなどを作成することができます。ユーザーにウィザードのUIを提示して、どのプロジェクトとファイル参照を含めるかという点でソリューションをカスタマイズできるオプションを求めることもできます。すべての種類のプロジェクト設定を設定できます。標準などを実施する

Service FactoryにGATの洗練された例があります。 http://social.msdn.microsoft.com/forums/en-US/vsgatk/threads/にはGATフォーラムもあります。

GATはVisual Studio Extensibilityを使用して実際に処理を行うのに最適な方法です。

1

もう少し調べたところ、IWizardインターフェイスは、ソリューション用のフォルダ構造(プロジェクトではない)が既に作成されるまで呼び出されないことも発見しました。私は進歩を遂げる必要があるので、純粋にテンプレート化されたプロセスではなく、Visual Studioへのアドインに移行することに決めました。

私は既にソリューションをプログラムで作成してから、テンプレート化されたプロジェクトを自分のソリューションに追加することができました。私はこの問題を回避することができました。私はいくつかのコードをスナップしましたが、これは基本的な考え方を与えます。

System.Type vsType = System.Type.GetTypeFromProgID( "VisualStudio.DTE.9.0"); DTE2 vs =(DTE2)System.Activator.CreateInstance(vsType、true);

soln =(Solution2)vs.Solution;

soln.Create(PathProjectRoot、SolutionName);

soln。SaveAs(SolutionName);

おかげさまで、ありがとうございました。

+0

FYI、これはまさにGATで行うことができるものですが、それ以上のことはできます。ユーザは、ソリューション名、プロジェクト、チームなどを入力するように促す「レシピ」を実行することができ、ソースツリー内の適切な場所にソリューションを構築することができます。 –

関連する問題