0

仕事用の 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」名前空間参照を、ユーザーがソリューション名として選択したものに置き換えます。
  • 基本プロジェクトが変更されるたびにテンプレートを簡単に更新できる簡単なプロセスを考え出す (ファイルの追加/削除、名前の変更、コンテンツの変更など)

これが可能かどうかは誰にもわかりませんか?

4

2 に答える 2