Добавление пользовательского формата в параметры шаблона Проект Visual Studio

Я определил шаблон Visual Studio с именем classDB.cs. Я хотел бы, чтобы имя по умолчанию для класса отображалось как [имя_проекта]DB.cs, где [имя_проекта] — это имя текущего проекта (как указано в диалоговом окне «Создать проект»). Есть ли способ добиться этого? Я попытался установить имя класса на $safeprojectname$DB.cs, но это не сработало.

ОБНОВЛЕНИЕ

Я изменил шаблон своего проекта, но выдает эту ошибку при создании проекта

введите здесь описание изображения

вот класс шаблона

namespace $safeprojectname$.Models
{
    public class $safeprojectname$DB : DbContext
    {

    }
}

класс в проекте


person Jorge    schedule 04.11.2011    source источник
comment
что ты имеешь в виду?. Нужно ли добавлять точку после templateParameter?   -  person Jorge    schedule 04.11.2011
comment
Я имел в виду, что ваш вопрос не содержит знаков препинания, кроме одной запятой и чрезмерного количества вопросительных знаков в конце, что очень затрудняет его чтение или понимание.   -  person Polynomial    schedule 04.11.2011
comment
Комментарии Polynomial относятся к вопросу до того, как я его переписал.   -  person Dan Davies Brackett    schedule 04.11.2011


Ответы (2)


Я боролся с подобной ошибкой в ​​​​течение нескольких дней и, наконец, понял это. Visual Studio экранирует символ $ в файле CSPROJ. Таким образом, у вас будет узел, который выглядит так:

<Compile Include="Models\%24safeprojectname%24DB.cs" />

Откройте файл .csproj в текстовом редакторе и измените его на:

<Compile Include="Models\$safeprojectname$DB.cs" />

И сохраните файл. Ваш проект перезагрузится, но он больше не будет пытаться экранировать имя файла! Экспортируйте свой шаблон, и вы обнаружите, что параметр теперь заменяется.

person David Johnson    schedule 27.02.2012

Попробуйте такой шаблон:

using System;
//...

namespace $rootnamespace$ {
    class $safeitemname$DB {
    }
}

Работает на меня.

Убедитесь, что вы обновили правильный шаблон (должен находиться под C:\Users\[user]\Documents\Visual Studio 2010\Templates\ItemTemplates в Windows 7) и перезапустите Visual Studio.


РЕДАКТИРОВАТЬ

Приведенный выше код предназначен для шаблона элемента, но он не должен отличаться от шаблона проекта. Согласно MSDN, параметры $safeitemname$ и $safeprojectname$ ведут себя одинаково:

safeitemname
Имя, указанное пользователем в диалоговом окне "Добавить новый элемент", из которого удалены все небезопасные символы и пробелы.

safeprojectname
Имя, указанное пользователем в диалоговом окне «Новый проект», с удаленными всеми небезопасными символами и пробелами.

person Otiel    schedule 04.11.2011
comment
привет и спасибо, что спросили, если это шаблон проекта, вы сделаете его таким же образом? Потому что я пытался так, и это принесло мне неприятности - person Jorge; 04.11.2011
comment
Это должно вести себя так же, да. Смотрите мою правку. В чем именно заключаются проблемы? - person Otiel; 04.11.2011
comment
извините, но это не работает, проверьте обновленный мой вопрос с лучшим описанием моей проблемы - person Jorge; 04.11.2011