У меня проблема с тем, что T4MVC теряет код, сгенерированный при каждом обновлении SVN.Я могу это исправить, удалив файлы .generated.cs и повторно запустив шаблон.Но это оказывается немного утомительным.Что-то мне не хватает?
Сначала небольшая справочная информация ...
Я использую C # v4, VS2010 и ASP.NET MVC2.Я использую Subversion для контроля версий.Я также использую ряд надстроек и расширений в VS2010 ...
- Huagati DBML.EDMX Tools
- Zippy.Chirp (для автоматического запуска шаблона T4MVC)
- Resharper v5
- Визуальный SVN
- Выравнивание назначений
- Веб-сайт ASP.NET OpenID
- Brace Completer (отключено)
- Code4Blog
- devColor
- Выделение всех вхождений выбранного слова (отключено)
- Проверка правописания HTML (отключено)
- Lipsum 2010 - Lorem Ipsum Generator
- PowerCommands для Visual Studio 2010
- Инструменты повышения производительности
- Проверка орфографии (отключена)
- Настройка фона Visual Studio
- Редактор цветовых тем Visual Studio
- VS10x Code Marker
- World of VS Default Browser Switcher
На самом деле я пишу этот вопрос как обновление своей рабочей копии и собираю то, что могуна каждом этапе ...
Шаг 1
У меня естьоткрыл мою среду IDE, чтобы начать работу в течение дня, и у меня уже есть 4 предупреждения компилятора, прежде чем я даже обновил свою рабочую копию ...
Warning 1 The C# 2.0 and C# 3.5 compilers are no longer supported. Templates will always be compiled with the version 4 compiler instead of 'v3.5' as specified. C:\Data Files\Projects\Web\ByBox.Vanventory\ByBox.Vanventory\T4MVC.tt 18 4
Warning 2 Compiling transformation: Unreachable code detected c:\Users\antony\AppData\Local\Temp\z04plrve.0.cs 1015 17
Warning 3 Compiling transformation: Assuming assembly reference 'EnvDTE, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' matches 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a', you may need to supply runtime policy C:\Data Files\Projects\Web\ByBox.Vanventory\ByBox.Vanventory\T4MVC.tt 1 1
Warning 4 Compiling transformation: Unreachable expression code detected c:\Data Files\Projects\Web\ByBox.Vanventory\ByBox.Vanventory\T4MVC.tt 968 33
Шаг 2
Сейчас я обновляю свою рабочую копию, щелкнув правой кнопкой мыши по корневому узлу в обозревателе решений и выбрав Обновить в части визуального SVN контекстного меню.
У меня есть деревоконфликтует с большинством моих файлов .generated.cs ...
- HomeController.generated.cs (конфликт дерева)
- T4MVC.cs (конфликт дерева)
- T4MVC.ExplicitExtensions.cs (удалено, добавлено)
- GoodsInController.generated.cs (конфликт деревьев)
- SharedController.generated.cs (удалено, добавлено)
- StockListController.generated.cs (конфликт дерева)
- StockCheckController.generated.cs (конфликт дерева)
- AuthController.generated.cs (конфликт дерева)
- GoodsOutController.generated.cs (конфликт дерева)
Шаг 3
Я сейчас разрешеннг мои конфликты.Я подозреваю, что именно в этом и заключается проблема, поскольку я всегда сохраняю свой локальный файл и отмечаю его как решенный.Я только что сделал это для первого конфликта (HomeController.generated.cs).Затем я попытался сравнить с моей локальной копией и получил следующее сообщение об ошибке ...
Невозможно найти местоположение хранилища для 'C: / Файлы данных / Проекты / Web / ByBox.Vanventory / ByBox.Vanventory /HomeController.generated.cs 'в редакции 14638
WOAH - ДЕРЖИТЕ ТАМ!
Я дошел до этого сегодня, когда понял причинуконфликт дерева заключается в том, что сгенерированные файлы фактически удаляются и повторно добавляются в проект.Теперь я не знаю, делает ли это сам T4MVC или расширение Chirpy.Я просмотрел исходный код Chirpy (просто просматривал в своем веб-браузере на codeplex), и, похоже, он этого не делает.
Я думаю, причина Tree Conflicts В Subversion есть два человека, которые вносят изменения в контроллеры, в результате чего мы оба генерируем новые файлы с одинаковыми именами файлов.Следовательно, в Subversion есть 2 новых файла, которые помечаются как Tree Conflict , потому что он не знает, что с этим делать.
Я подтвердил коллеге, который также использует T4MVC, что у него нет проблем с ним, но они являются единственным человеком, который вносит изменения в код контроллера.До того, как в моем проекте было два человека, у меня никогда не было проблем.Эта проблема появилась после того, как второй человек начал работать над проектом и вносить изменения в код контроллера.
Итак, я упускаю что-то явно очевидное или злоупотребляю T4MVC и / или Chirpy?
На данный момент у меня есть немного хакерского решения.Я написал скрипт powershell, чтобы «дотронуться» до всех файлов controller.cs.Я поместил это в мои Внешние инструменты в VS2010.Когда у меня возникает проблема, я запускаю этот скрипт powershell, а затем создаю программное обеспечение, которое заставляет работать шаблон T4MVC, и все мои ошибки исчезают.Это не идеально, и я бы хотел, чтобы он «просто работал».
Редактировать
Чтобы прояснить ситуацию, в которую я хотел бы попасть, я могучтобы просто открыть Visual Studio по утрам, выполнить обновление SVN (через VisualSVN) и не тратить время на его сборку, потому что код отсутствует в сгенерированных файлах, которые были там вчера.
Итак, как именно работает шаблон / T4MVC в Visual Studio?
(Если он удаляет сгенерированные файлы и воссоздает их каждый раз при запуске, тогда у меня будетпрекратить его использование, так как это просто не подходит для использования subversion и для множества людей, работающих над кодом, к которому добавляется сгенерированный код)