17

Visual Studio 2010 で、システムに存在する2 つのファイルへのリンクを含むプロジェクト テンプレートを作成したいと考えています。それらの 1 つは、一般的な AssemblyInfo.cs ファイルです。もう 1 つは、厳密な名前のキー ファイル (*.snk) です。

各開発者のワークスペースは異なる方法で設定されるため、これらの参照はrelativeである必要があります。プロジェクト テンプレートが、これらのファイルが各開発者の環境のどこにあるのかを何らかの方法で把握することは可能ですか?

テンプレートについて読むと、それらはかなり静的であるように聞こえるので、このようなことを行うためのトリックを行うことができるのではないかと思います. 他に何もないとしても、コンパイル エラーを引き起こす偽の参照を追加して、開発者にこれらのファイルをフックするように強制することができます。

4

3 に答える 3

19

vstemplate でCreateInPlaceプロパティをに設定する必要があります。ドキュメントtrueによると

プロジェクトを作成して指定した場所でパラメータ置換を行うか、一時的な場所でパラメータ置換を行ってからプロジェクトを指定した場所に保存するかを指定します。

相対パスを機能させるには、一時的な場所ではなく、プロジェクトを作成している場所でパラメーターの置換を行う必要があります。

于 2012-01-05T12:28:40.327 に答える
2

Microsoft は、これが拡張モデルとプロジェクト テンプレートのバグであることを確認しています。IWizard を使用して、これを回避することができました。IWizard 実装の RunFinished メソッドに次のコードを追加しました。

    //Get linked file directory
    string coreDir = Path.GetDirectoryName(MyProject.FullName);

    //Data folder
    ProjectItem propertiesProjectItem = slSharedProject.ProjectItems.Cast<ProjectItem>().Where(p => p.Name == "Data").First();
    propertiesProjectItem.ProjectItems.AddFromFile(coreDir + @"\Service\TheFileIWantToLink.cs");

このコードは、TheFileIWantToLink.cs ファイルのコピーを私の共有 Silverlight プロジェクト (slSharedProject) にリンクします。

于 2011-06-23T10:00:38.453 に答える
1

ウィザードをプロジェクト テンプレートに統合し、リンクされたファイルへのパスを設定することができます。私の記憶が正しければ、ユーザー インターフェイスを作成する必要はありません。replacementsDictionaryで正しい置換を指定するだけで、VS がテンプレート ファイルの値を置き換えます。詳細については、これまたはこれを参照してください。

于 2011-05-25T20:32:05.710 に答える