1

私は現在アドインに取り組んでおり、プログラムでプロジェクトにカスタムアイテムテンプレートを追加する機能が必要です。

現在、テンプレート(.zip形式)を.. \ Visual Studio 2010 \ Templates \ItemTemplates\にインストールしています。

アドイン内から、次のコードを呼び出します。

string templateLocation = (solution as Solution2).GetProjectItemTemplate(templateName, language);
projectToAddTo.ProjectItems.AddFromTemplate(templateLocation, nameOfNewItem);

アイテムテンプレートがC#ファイル用である場合、言語変数に「CSharp」を使用し、テンプレートを言語フォルダー「VisualC#」または「VisualWeb Developer \ VisualC#」に配置すると、これはすべて正常に機能します。テンプレートは、Visual Studio内で検出され、正しく実装されます。
ただし、JScriptまたはHTMLテンプレートを作成する場合、言語を「JScript」または「HTML」として指定すると、GetProjectItemTemplateメソッドは例外をスローします。テンプレートを「ItemTemplates\JScript(HTML)」と「ItemTemplates \ Visual Web Develerop \ JScript(HTML)」の両方に配置しようとしましたが、うまくいきませんでした。

誰かが私が間違っていること、これらのカスタムアイテムテンプレートでサポートされている言語、言語パラメータとフォルダの場所について何か考えがありますか?

4

2 に答える 2

1

これをもう少し詳しく調べてみると、パラメータLanguage instring Solution2.GetProjectItemTemplate(string TemplateName, string Language)は、実際にはアイテムテンプレートが対象としているプロジェクトの言語タイプであるように思われます。したがって、テンプレート内の実際のアイテムがjavaファイルまたはhtmlファイルであるかどうかに関係なく、プロジェクトはCSharpまたはVisualBasicのままであるため、Languageパラメーターとして渡す必要があります。

さらに、カスタムアイテムとプロジェクトテンプレートの場所では、フォルダーの名前は、Visual C#、Visual Basic、Visual Web Developer\JScriptのいずれであっても関係ありません。フォルダの名前は、[新しいアイテムの追加]ダイアログでの表示方法と、キャッシュへの保存方法に影響します。

また、GetProjectItemTemaplateを呼び出すときに指定するTemplateNameパラメーターには、ItemTemplatesフォルダーの下からの完全な削除パスが含まれている必要があります。それがなくても機能しますが、異なる場所に同じ名前のテンプレートが複数ある場合は、VSによって最初のテンプレートが返されます。

于 2010-10-08T12:40:28.230 に答える
0

私の提案は、HTMLまたはJSを使用し、VS独自のメニューを使用してこれをテンプレートとしてエクスポートすることです。language次に、テンプレートを解凍し、ファイル内のパラメーターを探し.vstemplateます。

于 2010-10-08T13:19:06.223 に答える