Крутые фичи Visual Studio 2019
Несколько дней назад мы объявили об общей доступности Visual Studio 2019. Лично я использую Visual Studio 2019 с момента первой внутренней сборки — задолго до выпуска Preview 1 в декабре 2018 года. За это время обнаружилось много маленьких особенностей, которые заставили меня улыбнуться и сделали мою работу более продуктивной.
Я хочу поделиться некоторыми из них с вами, поскольку они не все очевидны, а некоторые требуют изменения некоторых настроек. Подробности под катом!
За перевод спасибо нашему MSP, Льву Буланову.
Загрузка Clean Solution
Когда решение закрыто, его состояние сохраняется, и в следующий раз, когда вы откроете его, Visual Studio сможет восстановить свернутое/развернутое состояние проектов и папок в обозревателе решений (Solution Explorer) и снова открыть оставленные открытыми документы. Это замечательно, но я предпочитаю чистый лист, когда открываю решения — файлы не открываются, а все узлы дерева в обозревателе решений сворачиваются.
Я создал расширение Clean Solution, чтобы обеспечить такое поведение в предыдущей версии Visual Studio. Эта функция теперь встроена в Visual Studio 2019 и может быть включена двумя отдельными галочками. Перейдите в поиск (Ctrl+Q) и введите load, чтобы найти страницу Projects and Solutions > General options.
Снимите галочки Reopen documents on solution load и Restore Solution Explorer project hierarchy on solution load.
Дополнительным преимуществом снятия этих двух галочек является то, что решения будут загружаться быстрее из-за устранения накладных расходов при восстановлении состояния. Win-win.
Git pull сочетанием клавиш
Я много работаю с репозиториями GitHub и часто принимаю запросы от людей. Это означает, что я должен сделать git pull перед тем, как делать последующие коммиты. Но, как оказывалось неоднократно, это можно легко забыть. В результате я сталкивался с конфликтами слияний и другими неприятностями.
В прошлом единственным способом сделать git pull было использование Team Explorer, командной строки или внешнего инструмента. Что я действительно хотел получить, так это сочетание клавиш в Visual Studio, которое бы делало это для меня.
Раньше команда pull в Team Explorer не была командой, которой можно назначать сочетания клавиш, но теперь это так. Перейдите к поиску (Ctrl+Q) и введите «keyboard», чтобы найти страницу Environment > Keyboard. В ней найдите команду Team.Git.Pull в списке. Затем присвойте ей любое сочетание и нажмите кнопку ОК. Я решил использовать Ctrl+Shift+P.

Чтобы автоматически выполнить git pull при загрузке решения, попробуйте открытое расширение Git Pull.
Code Cleanup для C#
Ведение аккуратно-отформатированного исходного кода и обеспечение согласованности стилей кодинга — это то, в чем я никогда не был хорош. Новая функция Code Cleanup очень помогает поддерживать мой код в чистоте и порядке, поскольку я настроил его для запуска всех фиксеров по умолчанию.
Для этого перейдите в меню Code Cleanup, расположенное в нижней части окна редактора, и нажмите Configure Code Cleanup.

В диалоговом окне выберите все фиксеры один за другим на нижней панели и нажмите кнопку со стрелкой вверх, чтобы переместить их наверх. Затем нажмите OK.

Теперь все фиксеры будут запускаться каждый раз, когда вы выполняете очистку кода. Просто нажмите Ctrl+K, Ctrl+E для выполнения. В результате получается хорошо отформатированный документ, в котором применяется набор правил стиля кодирования, таких как добавление недостающих скобок и модификаторов. Вуаля!
IntelliCode
IntelliCode — это новая функция, которая расширяет возможности IntelliSense в зависимости от контекста, в котором вы используете продвинутые алгоритмы машинного обучения. Это полезно для многих сценариев, в том числе при изучении новых интерфейсов или API. Я пишу много расширений Visual Studio, и разнообразность API настолько велика, что есть части, которые я никогда не использовал. Когда я изучаю новую часть API Visual Studio, я нахожу очень полезным, что IntelliCode подсказывает мне, как ее использовать.
Чтобы включить эту мощную функцию, вы можете скачать IntelliCode из Visual Studio Marketplace и установить расширение.
IntelliCode работает с C#, C++ и XAML.
Просмотр содержимого Clipboard Ring
Каждый раз, когда вы копируете (Ctrl+C) что-то в Visual Studio, оно сохраняется в Clipboard Ring. Сочетание клавиш Ctrl+Shift+V позволяет циклически перемещаться по элементам в Clipboard Ring и вставлять выбранный элемент. Я считаю очень полезным хранить несколько вещей в буфере обмена одновременно, а затем вставлять различные элементы в определенные места.
В Visual Studio 2019 Clipboard Ring теперь показывает визуальное превью своего содержимого при нажатии Ctrl+Shift+V. Это облегчает навигацию по истории копий и выбор нужного элемента для вставки.

Новые рефакторинги C#
В C# есть много новых и очень полезных рефакторингов, которыми я пользовался каждый день. Они отображаются как подсказки в виде лампочки.
Чтобы узнать больше о новых рефакторингах и других функциях C # в Visual Studio 2019, ознакомьтесь с с этой статьей в блоге .NET.
Git Stash
Возможность отложить какую-то работу на будущее может быть очень полезна. Git Stash — это то, что дает мне эту возможность без необходимости создавать новую ветку. Если вы знакомы с TFS, то Git Stash очень похож на shelveset.

Самое приятное, что я могу управлять всеми своими заметками в окне Team Explorer. Их легко создавать и применять, и я стал их использовать гораздо больше, после того как Visual Studio начал их поддерживать по умолчанию.
Попробуйте Visual Studio 2019
Это были лишь некоторые из множества улучшений, добавленных в Visual Studio 2019, которые я считаю особенно полезными. Пожалуйста, делитесь своими лайфхаками или улучшениями, которые вы считаете полезными, в комментариях ниже!
Mads Kristensen
Senior Program Manager, Visual Studio Extensibility
Настройка проекта Linux на основе MSBuild C++ в Visual Studio
Поддержка Linux реализована в Visual Studio версии 2017 и выше.
В этой статье показано, как настроить проект Linux на основе MSBuild, который описан в статье Создание проекта Linux на основе MSBuild C++ в Visual Studio. Сведения о проектах Linux CMake см. в разделе Создание и настройка проекта Linux CMake.
Вы можете настроить проект Linux для физического компьютера или виртуальной машины Linux, а также для подсистемы Windows для Linux (WSL).
Visual Studio 2019 версии 16.1 и более поздней:
- Если в качестве целевой платформы используется WSL, можно избежать операций копирования, необходимых для сборки и получения компонентов IntelliSense для целевой удаленной системы Linux.
- Можно указать отдельные целевые объекты Linux для сборки и отладки.
Общие параметры
Чтобы просмотреть параметры настройки, выберите Проект > Свойства или щелкните правой кнопкой мыши проект в обозревателе решений и выберите Свойства в контекстном меню. Появятся параметры Общие.

По умолчанию создается исполняемый файл (с расширением .out). Чтобы создать статическую или динамическую библиотеку либо использовать существующий файл Makefile, используйте параметр Тип конфигурации.
Если вы выполняете сборку для подсистемы Windows для Linux (WSL) версии 1, количество параллельных процессов компиляции будет ограничено 64. Это ограничение контролируется параметром Максимальное количество параллельных заданий компиляции в разделе Свойства конфигурации > C/C++ > Общие.
Независимо от версии WSL, если планируется использовать более 64 параллельных процессов компиляции, рекомендуется выполнять сборку с помощью Ninja, что в большинстве случаев будет быстрее и надежнее. Чтобы выполнить сборку с помощью Ninja, используйте параметр Включить инкрементное построение в разделе Свойства конфигурации > Общие.
См. подробнее о параметрах на страницах свойств в справочнике по страницам свойств проекта Linux.
Настройки удаленной системы
Изменить параметры для удаленного компьютера Linux можно в окне Общие.

-
Чтобы указать целевой удаленный компьютер Linux, используйте запись Компьютер удаленной сборки. Это позволит выбрать одно из подключений, созданных ранее. Чтобы создать новую запись, см. раздел Подключение к удаленному компьютеру Linux.

Visual Studio 2019 версии 16.7 и более поздней: чтобы выбрать подсистему Windows для Linux (WSL), задайте в раскрывающемся списке Набор инструментов платформы значение GCC для подсистемы Windows для Linux. Другие параметры удаленного взаимодействия исчезнут. Вместо них отобразится путь к оболочке WSL по умолчанию: Если у вас есть параллельные установки WSL, можно указать другой путь. См. подробнее об управлении и настройке и администрировании подсистемы Windows для разных дистрибутивов Linux. Вы можете указать другой целевой объект для отладки на странице Свойства конфигурации>Отладка.
Изменить компиляторы C и C++ или компоновщик и архиватор, которые используются для сборки проекта по умолчанию, можно в соответствующих записях в разделе C/C++ > Общие и разделе Компоновщик > Общие. Например, можно указать определенную версию GCC и Clang. Дополнительные сведения см. в статьях Свойства C/C++ (Linux C++) и Свойства компоновщика (Linux C++).
Копирование источников (только для удаленных систем)
При использовании WSL этот раздел можно пропустить.
Во время сборки в удаленных системах исходные файлы на компьютере разработки копируются на компьютер Linux и компилируются там. По умолчанию все источники в проекте Visual Studio копируются в расположения, заданные в параметрах выше. Однако можно также добавить в список дополнительные источники или полностью отключить копирование источников, что используется по умолчанию для проекта Makefile.
- Параметр Источники для копирования определяет, какие источники копируются на удаленный компьютер. По умолчанию @(SourcesToCopyRemotely) применяется ко всем файлам исходного кода в проекте, за исключением файлов ресурсов (например, изображений).
- Копирование источников можно включать и отключать, чтобы разрешать или запрещать копирование исходных файлов на удаленный компьютер.
- Параметр Дополнительные источники для копирования позволяет добавлять дополнительные исходные файлы, которые будут скопированы в удаленную систему. Вы можете задать список файлов, разделенных точкой с запятой, или использовать синтаксис : = , чтобы указать локальное и удаленное имя:
События сборки
Так как вся компиляция происходит на удаленном компьютере (или в WSL), в раздел «События сборки» свойства проекта добавляются некоторые дополнительные события сборки. Это удаленное событие перед сборкой, удаленное событие перед компоновкой и удаленное событие после сборки, которые будут возникать на удаленном компьютере перед или после отдельных этапов процесса.

IntelliSense для заголовков в удаленных системах
При добавлении нового подключения в диспетчере подключений Visual Studio автоматически обнаруживает каталоги включения (include) для компилятора на удаленной системе. Затем Visual Studio архивирует с помощью zip и копирует эти файлы в каталог на локальном компьютере Windows. После этого при каждом использовании данного соединения в проекте Visual Studio или CMake заголовки в этих каталогах используются для обеспечения поддержки технологии IntelliSense.
В Visual Studio 2019 версии 16.5 и более поздних удаленное копирование заголовков было оптимизировано. Заголовки теперь копируются по запросу при открытии проекта Linux или настройке CMake для целевого объекта Linux. Копирование выполняется в фоновом режиме для каждого проекта на основе указанных в проекте компиляторов. Дополнительные сведения см. в статье Улучшения точности и производительности IntelliSense в Linux.
Для использования этой возможности необходимо, чтобы на компьютере Linux был установлен zip. Для установки zip можно использовать следующую команду пакетного менеджера apt-get:
sudo apt install zip
Для управления кэшем заголовка перейдите в меню Сервис > Параметры, кроссплатформенный > Диспетчер соединений > Диспетчер удаленных заголовков IntelliSense. Для обновления кэша заголовка после внесения изменений на компьютере Linux выберите удаленное подключение и нажмите Обновить. Нажмите Удалить, чтобы удалить заголовки, не удаляя само подключение. Выберите Проводник, чтобы открыть локальный каталог, в проводнике. К этой папке необходимо относиться как к папке только для чтения. Чтобы скачать заголовки для существующего подключения, созданного в Visual Studio 2017 до версии 15.3, выберите подключение и щелкните Скачать.


Вы можете включить ведение журнала для устранения проблем:

Языковой стандарт целевого объекта Linux
Языковые параметры Visual Studio не распространяются на целевые объекты Linux, так как Visual Studio не управляет установленными пакетами и не настраивает их. Сообщения, отображаемые в окне Вывод, например ошибки сборки, отображаются с использованием языка и языкового стандарта целевого объекта Linux. Вам потребуется настроить целевые объекты Linux для требуемого языкового стандарта.
Пошаговое руководство. Сборка и отладка C++ с помощью WSL 2 и Visual Studio 2022
В Visual Studio 2022 появился собственный набор инструментов C++ для разработки подсистемы Windows для Linux версии 2 (WSL 2). Этот набор инструментов теперь доступен в Visual Studio 2022 версии 17.0 или более поздней.
WSL 2 — это новая, рекомендуемая версия подсистемы Windows для Linux (WSL). Она позволяет повысить производительность файловой системы Linux, обеспечивает поддержку графического пользовательского интерфейса и полную совместимость системных вызовов. Набор инструментов WSL 2 Visual Studio позволяет использовать Visual Studio для создания и отладки кода C++ в дистрибутивах WSL 2 без добавления подключения SSH. Для создания и отладки кода C++ в дистрибутивах WSL 1 вы можете использовать встроенный набор инструментов WSL 1, представленный в Visual Studio 2019 версии 16.1.
Набор инструментов WSL 2 Visual Studio поддерживает проекты Linux на основе CMake и MSBuild. CMake рекомендуется для любой кроссплатформенной разработки на C++ с помощью Visual Studio. Рекомендуется использовать CMake, поскольку он позволяет создавать и отлаживать один и тот же проект как в Windows, так и в WSL и удаленных системах.
Видеоролик с информацией, приведенной в этом разделе, см. в статье Видео: отладка C++ с помощью дистрибутивов WSL 2 и Visual Studio 2022.
Базовые сведения о наборе инструментов WSL 2
Кроссплатформенная поддержка C++ в Visual Studio предполагает, что все исходные файлы поступают из файловой системы Windows. При нацеливании на дистрибутив WSL 2, Visual Studio локально выполнит команду rsync для копирования файлов из файловой системы Windows в файловую систему WSL. Для локальной копии rsync не требуется вмешательство пользователя. Это происходит автоматически, когда Visual Studio обнаруживает, что вы используете дистрибутив WSL 2. Дополнительные сведения о различиях между WSL 1 и WSL 2 см. в статье Сравнение WSL 2 и WSL 2.
Набор средств WSL 2 поддерживается интеграцией предварительных установок CMake в Visual Studio. Дополнительные сведения см. в статьях Интеграция предварительных установок CMake в Visual Studio и Visual Studio Code и Настройка и сборка с помощью предустановок CMake в Visual Studio. В этой статье также приводятся более подробные сведения, касающиеся сложных проектов WSL 2 и CMake.
Установка средств сборки
Установите средства, необходимые для сборки и отладки в WSL 2. Вы установите последнюю версию CMake с помощью двоичного развертывания CMake Visual Studio на следующем шаге.
- Установите дистрибутив WSL и WSL 2, следуя инструкциям в разделе Установка WSL.
- Если предположить, что дистрибутив использует apt (в этом пошаговом руководстве используется Ubuntu),выполните следующие команды для установки необходимых средств сборки в дистрибутив WSL 2:
sudo apt update sudo apt install g++ gdb make ninja-build rsync zip
- Компилятора C++
- gdb
- CMake
- rsync
- zip
- Базового генератора системы сборки
Кроссплатформенная разработка CMake с помощью дистрибутива WSL 2
В этом пошаговом руководстве используется GCC и Ninja в Ubuntu. А также Visual Studio 2022 версии 17.0 (предварительная версия 2) или более поздней.
Visual Studio определяет проект CMake как папку с файлом CMakeLists.txt в корневом каталоге проекта. В этом пошаговом руководстве вы создадите новый проект CMake с помощью шаблона проекта CMake Visual Studio:
- В Visual Studio на экране Начало работы выберите Создание нового проекта.

- В текстовом поле Поиск шаблонов введите «cmake». Выберите тип Проект CMake и нажмите кнопку Далее. Присвойте проекту имя и выберите расположение, а затем нажмите Создать.
- Включите интеграцию предустановок CMake Visual Studio. Выберите Сервис>Параметры>CMake>Общие. Установите флажок Отдавать предпочтение использованию предустановок CMake для настройки, сборки и тестирования, затем нажмите ОК. Вместо этого можно было добавить файл CMakePresets.json в корневую папку проекта. Дополнительные сведения см. в разделе Включение интеграции предварительных установок CMake.

- Чтобы активировать интеграцию: в главном меню выберите Файл>Закрыть папку. Появится страница Начало работы. В разделе Открыть последние выберите папку, которую вы только что закрыли, чтобы снова открыть ее.
- В главном меню Visual Studio есть три раскрывающихся списка. Чтобы выбрать активную целевую систему, используйте раскрывающийся список слева. Это система, в которой будет вызываться CMake для настройки и сборки проекта. Для запроса установки WSL среда Visual Studio использует wsl -l -v . На следующем рисунке в качестве целевой системы выбрано WSL2: Ubuntu-20.04.
Примечание. Если Visual Studio запускает автоматическую настройку проекта, перейдите к шагу 11 для управления двоичным развертыванием CMake, а затем перейдите к шагу ниже. Сведения о настройке этого поведения см. в разделе Изменение автоматической настройки и уведомлений кэша.







Вы создали приложение C++ с помощью WSL 2 и Visual Studio 2022 и выполнили его отладку.
Дополнительные рекомендации по проектам WSL 2 и CMake
Visual Studio обеспечивает собственную поддержку WSL 2 только для проектов CMake, которые используют CMakePresets.json в качестве активного файла конфигурации. Сведения о миграции с CMakeSettings.json на CMakePresets.json см. в разделе Включение интеграции предустановок CMake в Visual Studio.
Если вы настраиваете дистрибутив WSL 2 и не хотите использовать набор инструментов WSL 2, то на карте поставщика удаленных параметров Visual Studio в CMakePresets.json установите для параметра forceWSL1Toolset значение true. Дополнительные сведения см. в статье о карте поставщика удаленных Параметры Visual Studio.
Если параметр forceWSL1Tooslet имеет значение true, то Visual Studio не будет хранить копию исходных файлов в файловой системе WSL. Вместо этого она будет получать доступ к исходным файлам на подключенном диске Windows ( /mnt/ . ).
В большинстве случаев рекомендуется использовать набор инструментов WSL 2 с дистрибутивами WSL 2, так как WSL 2 медленнее при хранении файлов проекта в файловой системе Windows. Дополнительные сведения о производительности файловой системы в WSL 2 см. в разделе Сравнение WSL 1 и WSL 2.
Укажите дополнительные параметры, такие как путь к каталогу в WSL 2, куда будет скопирован проект, параметры копирования источника и аргументы команды rsync, в карте поставщика удаленных параметров Visual Studio в CMakePresets.json . Дополнительные сведения см. в статье о карте поставщика удаленных Параметры Visual Studio.
Системные заголовки по-прежнему автоматически копируются в файловую систему Windows для предоставления собственного интерфейса IntelliSense. Вы можете настроить заголовки, которые включены в эту копию или исключены из нее, в карте поставщика удаленных параметров Visual Studio в CMakePresets.json .
Можно изменить режим IntelliSense или указать другие параметры IntelliSense в карте поставщика удаленных параметров Visual Studio в CMakePresets.json . Подробные сведения см. в разделе Карта поставщика удаленных параметров Visual Studio.
Проекты Linux на основе WSL 2 и MSBuild
CMake рекомендуется для любой кроссплатформенной разработки C++ с использованием Visual Studio, поскольку позволяет создавать и отлаживать один и тот же проект как в Windows, так и в WSL и удаленных системах.
Но у вас может быть проект Linux на основе MSBuild.
Если у вас есть проект Linux на основе MSBuild, вы можете перейти к набору инструментов WSL 2 в Visual Studio. Щелкните проект правой кнопкой мыши в обозревателе решений, а затем выберите «Свойства>общего>набора инструментов платформы»:

Если вы используете дистрибутив WSL 2 и не хотите использовать набор инструментов WSL 2, в раскрывающемся списке инструментов платформы выберите GCC для подсистема Windows для Linux или Clang для набора инструментов подсистема Windows для Linux. Если выбран один из этих наборов инструментов, Visual Studio не будет хранить копию исходных файлов в файловой системе WSL и вместо этого будет получать доступ к исходным файлам на подключенном диске Windows ( /mnt/ . ). Системные заголовки по-прежнему автоматически копируются в файловую систему Windows для предоставления собственного интерфейса IntelliSense. Настройте заголовки, которые включены в эту копию или исключены из нее, в разделе Страницы свойств>Общие.
В большинстве случаев рекомендуется использовать набор инструментов WSL 2 с дистрибутивами WSL 2, так как WSL 2 медленнее при хранении файлов проекта в файловой системе Windows. Дополнительные сведения см. в разделе Сравнение WSL 1 и WSL 2.
О Dotfuscator Community & Visual Studio
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
PreEmptive Protection — Dotfuscator — это решение для комплексной защиты приложений .NET, которое легко встраивается в жизненный цикл разработки безопасного программного обеспечения. Используйте его, чтобы обеспечить усиленную безопасность и настроить очистку рабочего стола, мобильных устройств, сервера и встроенных приложений. Так вы сможете защитить коммерческие тайны и другую интеллектуальную собственность от пиратства, подделки, изменения данных и несанкционированной отладки. Dotfuscator работает на скомпилированных сборках без необходимости программирования или даже доступа к исходному коду.
Почему важна защита
Защищать интеллектуальную собственность очень важно. Код вашего приложения содержит сведения о проектировании и реализации, которые могут считаться интеллектуальной собственностью. Однако приложения, создаваемые на платформе .NET Framework, содержат большой объем метаданных и промежуточного высокоуровневого кода, поэтому их можно легко изучать и декомпилировать с помощью множества бесплатных автоматизированных средств. Прервав и остановив обратную инженерию, вы можете предотвратить несанкционированное раскрытие IP-адресов и продемонстрировать, что ваш код содержит торговые секреты. Решение Dotfuscator позволяет маскировать ваши сборки .NET (выполнять их обфускацию), чтобы затруднить их изучение. При этом оно сохраняет исходное поведение приложений.
Также важно обеспечить целостность приложения. Помимо декомпиляции, злоумышленники могут попытаться скопировать ваше приложение (компьютерное пиратство), изменить его поведение во время выполнения или манипулировать его данными. Dotfuscator позволяет внедрить в приложение возможность обнаруживать и реагировать на неавторизованное использование: незаконное изменение данных, отладку третьими лицами, запуск на рутованных устройствах и другие случаи.
Дополнительные сведения о том, как Dotfuscator встраивается в жизненный цикл разработки защищенных приложений (SDL), см. на странице SDL App Protection (Защита приложений в рамках цикла SDL) в разделе решений компании PreEmptive.
О Dotfuscator Community
Ваша копия Microsoft Visual Studio включает копию PreEmptive Protection — Dotfuscator Community, доступную для бесплатного личного использования. (Эта бесплатная версия была ранее известна как Dotfuscator Community Edition или Dotfuscator CE.) Инструкции по установке версии Dotfuscator Community, включенной в Visual Studio, см. на странице установки.
Dotfuscator Community предлагает разработчикам, архитекторам и тест-инженерам набор служб для обеспечения и усиления защиты программного обеспечения. Примеры обфускации .NET и других функций защиты приложений, входящих в Dotfuscator Community:
- Переименование идентификаторов затрудняет изучение и декомпиляцию скомпилированных сборок.
- Защита от незаконного изменения позволяет обнаруживать выполнение незаконно измененных приложений и завершать незаконные сеансы либо принимать какие-то меры.
- Защита от отладки позволяет обнаруживать в работающем приложении подключенный отладчик и завершать сеансы отладки либо принимать необходимые меры.
- Защита на рутованных устройствах позволяет обнаруживать запуск приложения на рутованном устройстве с Android и завершать сеансы на таких устройствах либо принимать какие-то меры.
- Проверки срока действия позволяют закодировать дату «окончания срока службы» и завершать сеансы приложений, срок действия которых истек.
Подробные сведения об этих возможностях и о том, как встроить их в вашу стратегию защиты приложений, см. на странице по возможностям.
Dotfuscator Community предоставляет настроенную систему базовой защиты. А зарегистрированные пользователи Dotfuscator Community и пользователи PreEmptive Protection — Dotfuscator Professional, ведущего маскировщика .NET в мире, получают еще больше функций для защиты своих приложений. Сведения о расширении Dotfuscator см. на странице по обновлениям.
Приступая к работе
Чтобы начать использовать Dotfuscator Community в рамках Visual Studio, введите dotfuscator на панели поиска (CTRL+Q).
- Если dotfuscator Community уже установлен, поле поиска отображает параметр запуска Dotfuscator Community в заголовке меню. Дополнительные сведения см. на странице с инструкциями по началу работы в полном руководстве пользователя Dotfuscator Community.
- Если dotfuscator Community еще не установлен, поле поиска вместо этого показывает установку предварительной защиты — Dotfuscator под заголовком отдельных компонентов. Дополнительные сведения см. на странице по установке.
Вы также можете скачать последнюю версию Dotfuscator Community на странице загрузок Dotfuscator сайта preemptive.com.
Обновление с Dotfuscator Community 5
Узнайте, как выполнить обновление до PreEmptive Protection — Dotfuscator Community 6.
В зависимости от истории установки и версии Visual Studio, возможно, в настоящее время используется Dotfuscator Community 5, более ранний основной номер версии. В этом случае следует выполнить обновление, поскольку важно убедиться, что вашему коду предоставлены актуальные меры защиты. Обновления доступны бесплатно.
В этой статье объясняется, как определить, какая версия установлена, как при необходимости выполнить обновление до версии 6, а также какие функции были заменены или удалены в прежней версии и что появилось в новой.
Определение версии Dotfuscator
Если вы не уверены, какая версия Dotfuscator установлена, можно определить версию, выполнив одно из следующих действий:
- Запустите графический пользовательский интерфейс Dotfuscator Community: в Visual Studio откройте меню Сервис и выберите PreEmptive Protection — Dotfuscator Community. В графическом интерфейсе Dotfuscator откройте меню Справка и выберите пункт О программе…, чтобы открыть соответствующий экран. На этом экране перечислены версии Dotfuscator.
- Если вы интегрировали Dotfuscator в сборку с помощью интерфейса командной строки (как с приложениями Xamarin), вы также можете проверить журналы сборки на наличие строки, как показано в следующем примере:
Dotfuscator Community Version 5.42.0.9514-e0e25f754
Первое целое число версии до первой точки . указывает основной номер версии Dotfuscator. Если первое целое число равно 5 , необходимо выполнить действия по обновлению на этой странице, чтобы воспользоваться преимуществами последних компонентов Dotfuscator 6 и обновлений для защиты.
Инструкции по обновлению
В этом разделе приводятся наборы инструкций по обновлению Dotfuscator Community с версии 5 до версии 6.
Установка Dotfuscator 6
Dotfuscator Community распространяется как расширение для Visual Studio. Инструкции по установке Dotfuscator 6 зависят от используемой версии Visual Studio:
- Visual Studio 2019 Dotfuscator Community 6 входит в последние версии Visual Studio 2019 (16.10.0 и более поздние). Обновите Visual Studio 2019 до последней версии. При обновлении Visual Studio Dotfuscator Community 5 автоматически обновляется до версии Dotfuscator Community 6.
- Если вы еще не установили Dotfuscator, сначала обновите Visual Studio, а затем см. раздел Установка.
- Помимо Visual Studio вы всегда можете получить последние версии Dotfuscator Community со страницы Загрузки Dotfuscator.
Если вы ранее зарегистрировали Dotfuscator Community 5, эта регистрация автоматически преобразуется при первом запуске Dotfuscator Community 6.
Обновление путей к CLI
Если вы ранее использовали интерфейс командной строки Dotfuscator 5 для защиты приложения, необходимо обновить путь к интерфейсу командной строки в любых проектах и скриптах сборки, ссылающихся на него. Сюда входят проекты, в которых используется интеграция Dotfuscator Community с Xamarin.
Путь к Dotfuscator CLI может быть недопустимым, так как имена некоторых исполняемых файлов, установленных с Dotfuscator Community, были изменены в Dotfuscator 6. В результате этого изменения в Dotfuscator Community и Dotfuscator Professional используются одинаковые имена файлов.
Исполняемый файл для… Dotfuscator 5 Dotfuscator 6 GUI dotfuscator.exe dotfuscatorUI.exe CLI dotfuscatorCLI.exe dotfuscator.exe Путь к CLI может также быть недопустимым, если вы выполняете обновление до следующего основного номера версии Visual Studio или переключаете выпуски Visual Studio, так как Dotfuscator CLI устанавливается в каталоге установки Visual Studio. Симптомы и решения, перечисленные ниже, также применяются к этому сценарию.
Если в вашей сборке используется недопустимый путь к Dotfuscator CLI, могут возникать ошибки, как в следующих примерах:
‘»[. ]\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe»‘ is not recognized as an internal or external command, operable program or batch file.
The command «»[. ]\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe» Dotfuscator.xml» exited with code 9009.
When the DotfuscatorXamarinEnabled property is ‘true’, the Dotfuscator command line interface specified by DotfuscatorXamarinCliPath (‘[. ]\DotfuscatorCE\dotfuscatorCLI.exe’) must exist.
Чтобы обновить сборку для использования правильного пути к CLI, выполните следующие действия:
- Запустите графический пользовательский интерфейс Dotfuscator Community: в Visual Studio откройте меню Сервис и выберите PreEmptive Protection — Dotfuscator Community.
- В графическом интерфейсе Dotfuscator Community откройте меню Сервис и выберите пункт Командная строка Dotfuscator.
- В открывшейся командной строке введите where dotfuscator.exe . Скопируйте первый путь, отображаемый в текстовом документе, для последующего использования. Это новый путь к CLI в Dotfuscator Community 6.
- Откройте проект или конфигурацию сборки в соответствии с системой сборки.
- Для проектов Visual Studio откройте файл проекта ( .csproj .vbproj или .fsproj ) в виде обычного текста. Откройте файл проекта в Visual Studio.
- Если ранее вы использовали интеграцию Dotfuscator Community с Xamarin для защиты приложения Xamarin, помните, что Dotfuscator интегрируется в каждый проект приложения (например MyProject.Android.csproj и MyProject.iOS.csproj ) по отдельности, а не в проекты общей библиотеки. Обновите все проекты приложений, которые в настоящее время используют Dotfuscator.
- Найдите в проекте или конфигурации сборки все места, где используется старый путь к CLI в Dotfuscator Community 5. Обычно это путь, который заканчивается на dotfuscatorCLI.exe .
- При обновлении проекта с помощью интеграции Dotfuscator Community Xamarin старый путь расположен между
тегами и тегами.
- При обновлении проекта с помощью интеграции Dotfuscator Community Xamarin старый путь расположен между
- Замените старые пути, найденные в шаге 5, на новый путь, записанный на шаге 3. Если один из старых путей не является абсолютным, следует настроить новый путь в зависимости от контекста. В приведенном ниже VSInstallDir примере переменная среды использовалась в старом пути, поэтому соответствующий новый путь должен сделать то же самое.
- Новый путь из шага 3: C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscator.exe
- Старый путь в файле проекта: %VSInstallDir%\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe
- Новый путь в файле проекта: %VSInstallDir%\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscator.exe
- Если используется система управления версиями, например Git, убедитесь, что изменения, выполненные на шаге 6, отражаются в этой системе. Распространите эти изменения на остальную часть команды в зависимости от требований вашей системы и организации.
Поскольку dotfuscator.exe относится к графическому пользовательскому интерфейсу в Dotfuscator 5, но ссылается на интерфейс командной строки (CLI) в Dotfuscator 6, будьте внимательны при обновлении скриптов сборки, совместно используемых на нескольких компьютерах.
Компьютер с dotfuscator 5 установлен, который запускает скрипт, обновленный для Dotfuscator 6, приводит к запуску скрипта графического пользовательского интерфейса вместо предполагаемого интерфейса командной строки. Сборка может быть выполнена успешно, но к ней не будет применяться защита Dotfuscator, то есть исходящие пакеты НЕ будут защищены.
В других случаях это может привести к сбою сборки.
Чтобы избежать этих ситуаций, обновите Dotfuscator Community с версии 5 до версии 6 на всех компьютерах и скриптах сборки одновременно.
Обновление файлов конфигурации Dotfuscator
Необходимо обновить все файлы конфигурации Dotfuscator (например Dotfuscator.xml ), созданные до Dotfuscator 6.
Если вы пытаетесь запустить CLI Dotfuscator со старым файлом конфигурации, вы получите такие ошибки, как показано в следующих примерах:
Dotfuscator Engine Initialization error: PreEmptive Analytics, Authenticode signing, and the Introduce Explicit Method Overrides setting are no longer supported. Please open your Dotfuscator config in the Config Editor which automatically upgrades it.
Эта ошибка возникает и требуется обновить файл конфигурации, даже если вы не использовали функции, упоминание.
Чтобы обновить файл конфигурации, выполните следующие действия:
- Запустите графический пользовательский интерфейс Dotfuscator Community: в Visual Studio откройте меню Сервис и выберите PreEmptive Protection — Dotfuscator Community.
- Откройте соответствующий файл конфигурации Dotfuscator (CTRL+O).
- На вкладке «Выходные данные сборки» отображается следующее сообщение: PreEmptive Analytics, Authenticode signing, and the Introduce Explicit Method Overrides setting are no longer supported. The associated settings have been removed. Please save your upgraded Dotfuscator config.
- Сохраните обновленный файл конфигурации Dotfuscator (CTRL+S).
- Если используется система управления версиями, например Git, убедитесь, что изменения файла конфигурации Dotfuscator отражаются в этой системе. Распространите эти изменения на остальную часть команды в зависимости от требований вашей системы и организации.
Обновление интеграции с Xamarin
Если вы интегрировали Dotfuscator Community 5 в проект Xamarin, на одном из шагов вы должны были загрузить пользовательские целевые объекты и задачи MSBuild, например PreEmptive.Dotfuscator.Xamarin.targets . Эти целевые объекты и задачи были обновлены в Dotfuscator Community 6, поэтому вам необходимо заменить старые версии новыми версиями.
Чтобы обновить файлы интеграции Xamarin, выполните следующие действия:
- Откройте каталог, в который изначально были скачаны эти файлы. В примере, приведенном в инструкциях, используется подкаталог с именем PreEmptive.Dotfuscator.Xamarin , но файлы, возможно, скачаны в другой каталог, в котором могут находиться файлы, не связанные с Dotfuscator.
- В каталоге, найденном на шаге 1, удалите файлы, связанные с интеграцией Dotfuscator и Xamarin.
- Скачайте ZIP-файл, связанный с текущей версией следующего раздела руководство пользователя: Загрузка пользовательского набора целевых сборок и задач MSBuild для Dotfuscator.
- Извлеките содержимое ZIP-файла в тот же каталог, который указан на шаге 1.
- Если используется система управления версиями, например Git, убедитесь, что удаление старых файлов и добавление новых отражаются в этой системе. В зависимости от типа системы эти изменения могут отображаться как изменение содержимого, а не замена файлов. Распространите эти изменения на остальную часть команды в зависимости от требований вашей системы и организации.
Другие подразделы на этой странице также применяются к проектам Xamarin, поэтому обязательно просмотрите остальные инструкции этой страницы.
Обновление ссылок на библиотеки атрибутов
Dotfuscator позволяет настраивать определенные функции с помощью атрибутов .NET в исходном коде. Если проекты использовали такие атрибуты, может потребоваться обновить их для соответствия изменениями в Dotfuscator 6.
Атрибуты обфускации
Атрибуты обфускации остались прежними. Эти атрибуты определены в библиотеках базовых классов .NET, и Dotfuscator Community 6 продолжает их учитывать.
Атрибуты проверки
Библиотека, содержащая атрибуты проверки, изменилась. В Dotfuscator Community 5 она предоставлялась как файл вместе с Dotfuscator. Начиная с Dotfuscator Community 6 она будет распространяться как общедоступный пакет NuGet.
При попытке выполнить сборку проекта Visual Studio, который по-прежнему ссылается на старое расположение, могут возникать ошибки, как в следующих примерах:
The type or namespace name ‘PreEmptive’ could not be found (are you missing a using directive or an assembly reference?)
The type or namespace name ‘TamperCheckAttribute’ could not be found (are you missing a using directive or an assembly reference?)
Также могут возникать предупреждения:
Could not resolve this reference. Could not locate the assembly «PreEmptive.Attributes». Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
Чтобы обновить проект для использования нового расположения, сделайте следующее:
- Удалите ссылку на сборку проекта в PreEmptive.Attributes.dll .
- Добавьте в проект ссылку на пакет NuGet PreEmptive.Protection.Checks.Attributes . Пакет доступен в веб-канале NuGet по умолчанию — nuget.org.
Параметры ExtendedKey каждого атрибута проверки также были удалены. Эти параметры были проигнорированы в Dotfuscator Community 5, но если исходный код использовал их независимо от того, удалите эти действия для компиляции проекта.
Атрибуты инструментирования
Атрибуты инструментирования использовались для настройки функции PreEmptive Analytics в Dotfuscator 5. Однако функция PreEmptive Analytics удалена из Dotfuscator 6. См. подраздел PreEmptive Analytics в разделе «Удаленные компоненты». В результате атрибуты инструментирования также были удалены.
Если вы пытаетесь создать проект Visual Studio, использующий атрибуты инструментирования, вы можете получить те же виды ошибок и предупреждений, что и в check Attributes, хотя имена атрибутов отличаются (например, FeatureAttribute вместо TamperCheckAttribute ).
При попытке запустить Dotfuscator на уже созданных сборках, содержащих использование атрибутов инструментирования, вы получите такие ошибки, как в следующих примерах:
The PreEmptive.Attributes.FeatureAttribute attribute (annotating SomeNamespace.SomeType::SomeMethod) is not recognized by this version of Dotfuscator.
Чтобы устранить эти проблемы, удалите все использование атрибутов инструментирования из исходного кода. Кроме того, необходимо удалить ссылки на сборки в библиотеку, определяющую атрибуты PreEmptive.Attributes.dll . (Если вы также использовали атрибуты проверки, определенные в этой библиотеке, они были перемещены; см. раздел Атрибут проверки выше.)
Удаленные компоненты
В Dotfuscator Community 6 появились критические изменения по сравнению с Dotfuscator Community 5. Если вы использовали Dotfuscator Community 5, в этом разделе описано, что делать с изменениями, которые могут потребовать модификации сборки или повлиять на выходные данные Dotfuscator.
Полный список изменений доступен в журнале изменений.
Предварительная аналитика
Dotfuscator 6 не поддерживает PreEmptive Analytics, включая проверку телеметрии. Однако сами проверки (включая уведомления приложений и действия по проверке) по-прежнему поддерживаются.
Чтобы использовать Dotfuscator 6, обновите файл конфигурации, чтобы удалить параметры предварительной аналитики.
Если вы использовали атрибуты в коде для настройки PreEmptive Analytics, удалите их из исходного кода и перестроите входные сборки до того, как Dotfuscator 6 сможет защитить эти сборки.
Если вы использовали проверку телеметрии для сообщения о том, что проверка обнаружила недопустимое состояние (например, при обнаружении незаконных изменений), вы можете заменить ее пользовательским уведомлением приложения, которое сообщает об инциденте в Azure Application Insights или другую службу по вашему усмотрению.
Неподдерживаемые типы приложений
Следующие типы приложений больше не поддерживаются в Dotfuscator 6:
- Windows Phone
- WinRT (приложения Windows 8)
- Silverlight
- Unity (игровой обработчик)
Кроме того, приложения универсальной платформы Windows (UWP) поддерживаются только для сценариев Xamarin.
Чтобы защитить другие типы приложений UWP, выполните обновление до Dotfuscator Professional и следуйте инструкциям по защите приложения.
Неподдерживаемые входные данные
Dotfuscator Community больше не поддерживает пакеты универсальной платформы Windows (UWP) .appx в качестве входных данных. Вы можете и дальше защищать приложения Xamarin, предназначенные для UWP, с помощью интеграции с Xamarin. Чтобы защитить другие типы приложений UWP, выполните обновление до Dotfuscator Professional и следуйте инструкциям по защите приложения.
Кроме того, пакеты .xap больше не могут использоваться в качестве входных данных, поскольку Silverlight больше не поддерживается.
Введение в явные переопределения методов
Из Dotfuscator удален параметр переименования для предоставления явных переопределений методов. Чтобы использовать Dotfuscator 6, обновите файл конфигурации, чтобы удалить этот параметр.
