Visual Studio 15 SP 1
Очередной глюк... хотя скорее фича...
Две Студии, куча проектов в каждой. Часть проектов - общие, т.е. открыты в обоих Студиях.
При редактировании и сохранении все отрабатывает нормально - в второй Студии переспрашивается
надо ли загрузить изменения.
При удалении файлика из проекта (в моем случае - шаблончик Т4), вторая Студия ничего не спрашивала,
но вылетела на компиляции по отсутствующему файлу.
Очередная проблема в Студии.
Сгенерил Я свою задачку в полном - 900+ исходных таблиц - объеме и со всеми ошибками. Затраты по времени - порядка 20 секунд.
Первый прикид - часть кода неправильная, часть ссылок на другие ДЛЛ отсутствует, часть указанных файлов отсутствует - не беда, буду чинить.
Открыл солюшник в Студии.
В нем два проекта.
Объем кода - 12х900+... ну плюс/минус...
Уже почти час Студия валидирует состав проектов и пишет в Оутпут об отсутствующих файлах... ЧАС!!!
Попутно - открыть что либо в Студии невозможно - подвисает...
Глюк в шаблонах Т4
Имею в шаблоне для генерации файла проекта следующий код:
<Compile Include="<#= Table.Name #>\\SQL\\<#= LastGeneratedName #>">
Ожидается построение ссылки на сгенерированный шаблон. Кто не знает - добавьте шаблон в проект, выгрузите проект и посмотрите что там прописалось.
Т.е. ожидается что будет сгенерировано что-то такое:
<Compile Include="MyTable\SQL\Update_Row.cs">
Двойные бакслеши используются т.к. текст "\\SQL\\"
должен трансформироваться в this.Write("\\SQL\\");
но по факту он трансформируется в this.Write("\\\\SQL\\");
Т.е. первый двойной - удваивается, а второй - остается без изменений.
Чинится следующей заменой:
<Compile Include="<#= Table.Name #><#= @"\SQL\" #><#= LastGeneratedName #>">
Нашел еще пару баго-фичь в Студии (СП2).
Первая. Студия не понимает ссылки на линкованные (адд ас линк) файлы используемые в проекте. Неприятно, но не смертельно.
Вторая. При добавлении группы файлов в проект возможна ошибка добавления (в моем случае Я добавлял линк на файл который уже был в папке). В этом случае добавление не откатывается, а остается частично завершенным - что добавилось до ошибки - остается, остальное - не добавляется.
В выходные апгрейдился на СП3 на домашнем лапте... Это полный звизденец... вместе с самыми необходимыми апдейтами системы процедура заняла около 5 часов... Трафик - не считал, но с мобильного - очень не рекомендую...
Процесс выявил слабое место у лаптя - диск. там была 100% (согласно ТаскМанагеру) загрузка диска, но суммарнайa (реад&врите) скорость не превышала 10 Мбипс... Нужен террабайтный ССД... Я тут подумал... возможно, что сделав бекап и ресторе на СДД "старой" системы, затем ее проапгрейдить и тем же путем - бекап и ресторе на обычный диск оно будет быстрее...
Можно конечно.
Открываем студию и идем сюда C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\TextTemplating
Добавляем все что там есть - 2 ДЛЛ и один Таргетс - как линки к проекту.
Теперь выгружаем проект и дописываем Импорт для Таргетса, который добавлен как линк.
Результат - импортируемый Tаргетс не резолвится... пока не сделаешь локальную копию файлов...
Не слишком заморочно описал?
NP.
Очердной сюрприз от билли...
Код:
DirectoryInfo dInfo = new DirectoryInfo(Path.Combine(Environment.CurrentDirectory, "Clients"));FileInfo[] files = dInfo.GetFiles("*.dll");
помещает в филес то, что соответствует "*.dll[red]*[/red]".
Попал на это случайно - поменял один из интерфейсов, либу не перекомпилировал, а переименовал как "*.dll_". Ну а билли ее поднял как живую... и подох, мудак, на загрузке.
А попасть на описание - не суждено было?
"*.abc" returns files having an extension of.abc,.abcd,.abcde,.abcdef, and so on.
https://msdn.microsoft.com/en-us/library/8he88b63(v=vs.110...
https://msdn.microsoft.com/en-us/library/ms143327(v=vs.110...
Хотя отчего именно так сделано не совсем понятно.
отчего именно так сделано не совсем понятно
-----
Да от того что мудень не смог корректно обработать заменители символов.
Бля, поменять систему масок устойчиво используемую с начала 80-х... и объявить фичей... мудак он и есть мудак...
Ну кому нужны все файлы - напишут "*.dll*" ili "*.dll???"... но подгребать все в кучу? Ох, мудень...
Вопрос - как получить нормальный список соответствующий стандартной/старой маске?
Понятное дело - профильтровать список Я могу, но Я хочу получить то, что мне надо, от системы.
Не помню, может уже описывал...
Имеем Студию.
Имеем Солюшен с несколькими проектами.
Имеем дополнительную конфигурацию - у меня Тестс - для построения тестов.
Создаем новый Проект. В нем - две конфигурации. Третью надо добавлять руками.
Перед добавлением - выбираем Тестс и проверяем что выставлено в Конфигуратион Менеджере для созданного Проекта. Там должно быть Релеасе.
Выгружаем созданный проект, редактируем руками дописывая конфигурацию Тестс.
Сохраняем и загружаем Проект.
Пытаемся выставить Тестс для Проекта в Конфигуратион Менеджере...
Сюрприз - его там нет.
Высказываем все что думаем об мудаке билли, выгружаем Студию, загружаем Студию, выставляем вожделенный Тестс...
Сегодня словил очередного глюка...
Солюшен с 48 проектами (еще 40-45 проектов-тестов не включены в солюшен).
В прошлый четверг все проекты были скомпилированы и деплойнуты. Все работает как надо.
Никаких изменений в проекты не вносились.
Насколько помню - компилировал проекты на ВМ, выгрузив солюшен на основной машине.
Т.е. никакой вероятность того что поглючило на одновременном открытии проекта двумя Студиями - нет.
Тем не менее - сегодня проекты не компилируются - в одном из проектов откуда-то появилась ссылка на файл с тестами...
Я бы понял, если бы Я ее туда как-то добавил... но тогда не смог бы задеплоить новую версию... но версия - работает, а солюшен - не компилируется...