仕事用の MVC スターターキットを作成中ですが、作成後に大規模な手動変更を必要としないマルチプロジェクト テンプレートの作成に問題があります。
私が持っているのは、互いに依存関係がある 4 つのプロジェクトです。
- StarterKit.Common - 依存関係なし
- StarterKit.DAL - StarterKit.Common への依存関係
- StarterKit.BL - StarterKit.Common および StarterKit.DAL への依存 StarterKit.Web - 他の 3 つの依存
テンプレートのエクスポート ウィザードを使用して各プロジェクトをエクスポートし、ルート .vstemplate ファイルを作成してすべて圧縮する方法を試しました。これは機能しますが (このテンプレートに基づいて新しいソリューションを作成できます)、深刻な問題がいくつかあります。
まず、エクスポートにより、各プロジェクトの名前空間全体が $safeprojectname$ に置き換えられます。つまり、StarterKit.DAL => $safeprojectname$、StarterKit.Web => $safeprojectname$ などです。
つまり、新しいプロジェクトが作成されると (XXX と呼びましょう)、以前は名前空間 StarterKit.Web にあったものが XXX 名前空間になり、以前は StarterKit.BL だったものもXXX 名前空間になります!
これは明らかにうまくいきません。
第二に、一部の using ステートメントはまったく置き換えられません。たとえばusing StarterKit.Common;
、正しい名前空間 (StarterKit.Web) がないため、Web プロジェクトでは置き換えられません。
第三に、置き換えたい using ステートメントを含む .tt スクリプトがいくつかありますがReplaceParameters="true"
、プロジェクトで設定しても、これらはまったく変更されません。
VSIX プロジェクトの作成も検討しましたが、率直に言って、それをどのように使用できるかわかりません。私には、.vstemplate を作成し、.zip の名前を .vsix に変更する zip ユーティリティのように見えます。
私がする必要があるのは:
- VS で「新しいプロジェクト」テンプレートとして使用できる単一のデプロイ ファイルにすべてのプロジェクトをパッケージ化する
- 新しいプロジェクトが作成されたら、.csproj、.cs、.cshtml、および .tt ファイル内のすべての「StarterKit」名前空間参照を、ユーザーがソリューション名として選択したものに置き換えます。
- 基本プロジェクトが変更されるたびにテンプレートを簡単に更新できる簡単なプロセスを考え出す (ファイルの追加/削除、名前の変更、コンテンツの変更など)
これが可能かどうかは誰にもわかりませんか?