2012-05-05 11 views
1

要するに、私は現在分析と設計方法論に基づくサービス指向ソリューションのモデル変換に焦点を当てた私の大学の研究課題に取り組んでいます。メタモデルが収集された後、私の仕事は、この要件を実行可能で展開可能なWCFコンポーネントサービスライブラリに変換することです。これまでのところ、私は前処理されたテキストテンプレートを使用してC#コードに必要なすべてのオブジェクトを変換すると成功している、しかし、私の質問は以下のとおりです。C#を使用したT4コード変換

  • どのようにグループのすべての*(ビルド可能なプロジェクトファイルと一緒にファイルを生成することができます。 csproj)。ユーザーが新しいプロジェクトを作成し、生成されたファイルを手動で追加する必要はありません。その代わりに、すべてのファイルが含まれ、アセンブリー参照が追加された状態で自動的に生成され、ユーザーはディスク上の場所からプロジェクトを開くことができるはずです。
  • アセンブリ参照を参照または管理する最良の方法と実行時にそれらを含める方法を教えてください。私。 [ServiceContract]属性を持つインターフェイスをマークするには、まず、プロジェクトへの参照としてSystems.ServiceModelを追加し、次にそれをモジュールに組み込む必要があります。これはどうすればできますか?
  • 最後に、サービス動作、エンドポイントアドレス、バインディングまたはその他の必要な設定を定義するweb.config構成ファイルの生成方法。私はT4テンプレートがこのための正しいアプローチだとは思わない。

上記の問題に関する推奨事項やガイダンスは、高く評価されます。

+0

Web構成とプロジェクトの定義は、あなたが私の知る限りXSLT – cordialgerm

+0

を使用したい場合がありXMLであるため、サービスの振る舞いは、ウェブの設定に追加する必要はありません、彼らはプログラムで行うことができます。 (これは三番目の知識でしかありませんが、私はこれを決して設定したことはありません。 – JayC

+0

あなたのベストベッドは、手作業でプロジェクトファイルを作成し、追加したいファイルに関するすべてを取り除き、残っているものをテンプレートにすることです。 – R0MANARMY

答えて

2

Aha、これは、アセンブリ参照と既定のweb.configが既に含まれている定義済みのプロジェクトテンプレートを使用することで実現できました。私の変換が完了した後、私は変換されたサービスに関連する詳細をweb.configの適切なセクションに更新します。

DTE2 dte2 = (DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.10.0"); 
Solution2 soln = (Solution2)dte2.Solution; 

string templateFileLoc = soln.GetProjectTemplate("My Pre-defined project template", "csproj"); 

soln.AddFromTemplate(templateFileLoc, outputDir, projectName, false); 

var proj = soln.Projects.Item(soln.Projects.Count); 

proj.ProjectItems.AddFromFileCopy(generatedFile); 
+0

あなたが見つけたものを共有してくれてありがとう。 –

関連する問題