Формы имени типа или пространства имен не существуют в пространстве имен системных окон
Обновлено: 21.11.2024
Библиотеки¶
Создание проекта в Visual Studio¶
В этом разделе показано, как создать проект с нуля. Большинство шагов также относится к добавлению поддержки Leap Motion в существующий проект. В примере используется Visual Studio 2012.
Чтобы добавить поддержку Leap Motion в новый или существующий проект:
Важно: если вы создаете 64-разрядное приложение, используйте библиотеки в каталоге lib\x64 SDK, а не 32-разрядные библиотеки в lib\x86< /tt> каталог.
Откройте или создайте новый проект нужного типа Windows Forms или WPF.
Создайте системную переменную среды LEAP_SDK, чтобы она указывала на папку Leap Motion SDK. Этот шаг необязателен, но упрощает создание ссылок на файлы SDK в ваших проектах. (Напоминаем, что вы можете создавать и изменять переменные системной среды в диалоговом окне «Свойства системы» Windows.)
Выберите «Проект» > «Добавить ссылку».
В диалоговом окне Ссылки выберите Обзор.
Перейдите к папке Leap Motion SDK.
Примечание: не добавляйте какие-либо другие файлы библиотеки Leap Motion в качестве ссылки.
Установите целевую платформу x86 или x64:
- Откройте страницу свойств проекта с помощью Project >ProjectNameProperties.
- Выберите страницу Сборка.
- Установите для параметра Конфигурация значение Все конфигурации.
- В разделе Общие установите для целевой платформы значение x86 или x64 . Не используйте цель Любой ЦП.
Измените Событие после сборки, чтобы скопировать собственные библиотеки в целевой исполняемый каталог проекта.
Откройте страницу свойств проекта.
Выберите страницу События сборки.
Нажмите «Редактировать пост-сборку».
Измените поле события, чтобы скопировать библиотеки.
Для 32-разрядных проектов x86 добавьте:
Для 64-разрядных проектов x64 добавьте:
Примечание: если вы не создали переменную среды LEAP_SDK, используйте путь к вашей библиотеке SDK вместо $(LEAP_SDK) .
Добавьте исходный код.
Доступ к данным отслеживания Leap Motion¶
К данным элементов управления в приложении Windows Forms или WPF можно получить доступ только из основного потока приложения. Вы можете опросить объект Leap Motion Controller из основного потока, чтобы получить данные отслеживания в любое время. Однако, если вы используете объект Listener для получения уведомлений о событиях контроллера, таких как доступность нового кадра данных, имейте в виду, что функции обратного вызова, определенные в вашей реализации Listener, вызываются в отдельных потоках. Таким образом, вы не можете обновлять элементы управления GUI непосредственно из этих функций обратного вызова. Вместо этого вы должны отправить уведомление в поток приложения.
Вы можете отправлять сообщения из одного потока в другой с помощью функции Windows Invoke. В следующих примерах Invoke используется для отправки уведомлений прослушивателя в поток приложения. Чтобы избежать связывания подкласса Listener с конкретным подклассом Form или Window, в примерах определяется интерфейс ILeapEventDelegate — это позволяет любому классу, реализующему этот интерфейс, выступать в качестве делегата для событий Leap Motion. Обратите внимание, что объект Frame не передается делегату как часть уведомления. Принимающий класс уже имеет свой собственный объект Controller и может получить кадр в любое время, когда ему это необходимо. Событие — это просто уведомление о том, что доступен новый кадр.
Чтобы запустить любой пример, ваша форма или определение окна должны иметь шесть элементов управления Label с именами, показанными в методе newFrameHandler().
При обновлении с 3.0 preview6 до 3.0-preview7 я застрял с:
Я понял, что ошибка возникает из-за версии dotnet Core после удаления ВСЕХ доступных SDK, кроме версии 3.0-preview6. Затем я выполнил dotnet --version и понял, что он по-прежнему использует 3.0-preview7, что не имеет смысла.
Это заставляет меня думать, что деинсталлятор тоже должен быть сломан.
Текст был успешно обновлен, но возникли следующие ошибки:
nathan-alden-hp прокомментировал 25 июля 2019 г.
@Revan654 Как эта проблема связана с моей проблемой? Мне очень любопытно. Моя проблема связана именно с загрузкой сборок во время выполнения, а распознаватель не находит одну из зависимостей сборки.
nathan-alden-hp прокомментировал 25 июля 2019 г. •
@Revan654 С тех пор я закрыл свою проблему, так как обнаружил состояние гонки в своем коде. Сейчас я столкнулся с отдельной проблемой, но трудно сказать, связана ли она с вашей проблемой:
Произошло исключение (System.PlatformNotSupportedException) при получении информации о системе: System.Management в настоящее время поддерживается только для настольных приложений Windows.
cadesalaberry прокомментировал 26 июля 2019 г.
Пока что я буду придерживаться версии 3.0-preview6, пока не будет опубликован более полный выпуск.
Revan654 прокомментировал 26 июля 2019 г.
@nathan-alden-hp Функция копирования захватила неправильную ссылку. Не уверен, почему функция копирования FireFox иногда ломается.
@cadesalaberry Да, это правильная ссылка.
Похоже, придется дождаться Preview 8. Похоже, что MS отстает с релизами. Мы должны были получить RC Build в этом месяце, но пока ничего.
Есть и другие внутренние функции, которые также работают неправильно. Это риск, на который мы берем предварительные сборки.
weltkante прокомментировал 29 июля 2019 г.
У вас есть истина в файле проекта?
Прокомментировал RussKie 29 июля 2019 г.
@cadesalaberry, не могли бы вы опубликовать содержимое вашего файла csproj?
Кажется, придется подождать Preview 8.
P8 еще предстоит вырезать, поэтому он не будет выпущен в течение месяца или около того.
Похоже, что MS отстает с релизами. Мы должны были получить RC Build в этом месяце, но пока ничего.
Это сообщение было обновлено 24 сентября 2020 года.
Только что решил случайную проблему, которую достаточно сложно найти в Google, и я думаю, что ее стоит задокументировать! Кажется, они появляются всякий раз, когда вы работаете с чем-то, что только что из духовки…
Этот конкретный случай вращается вокруг того, что Visual Studio невероятно неприятна и начинает выдавать массу ошибок в коде, который работал пять минут назад.
В моем случае ошибка произошла после обновления Visual Studio. Всегда весело.
Симптомы
Оглавление
Ошибки начали появляться в Visual Studio. По сути, я только что начал получать ошибки, блокирующие мою сборку. Полный список различных проблем приведен ниже:
Проблема
Просмотр измененных файлов выявил виновника. Там был некий файл, оканчивающийся на «sln», который только что изменился и больше ничего не работало… :)
Посмотрите на картинку ниже.
Visual Studio принудительно обновила пакет «Microsoft.VisualStudio.Web.CodeGeneration.Design» с предварительной версии 8 до предварительной версии 9.
Обратите внимание: «Microsoft.VisualStudio.Web.CodeGeneration.Design» Version = «3.0.0-preview9-19453-02». Ниже также выдержка из файла решения (.sln):
Хорошо, поэтому пакет под названием «Microsoft.VisualStudio.Web.CodeGeneration.Design» был обновлен с предварительной версии 8 (3.0.0-preview8.19405.1) до предварительной версии 9. Без каких-либо действий с моей стороны. У меня были все остальные пакеты либо как последняя стабильная версия, либо как предварительная версия8. Но этот был выше — и все сломал.
Решение
Просто. Понизить версию Microsoft.VisualStudio.Web.CodeGeneration.Design.
Хорошо – верно. Это может быть невозможно. Однако, если это так, вот как вы можете это сделать:
Необходимое время: 20 минут.
-
Начните с изучения версии пакета Microsoft.VisualStudio.Web.CodeGeneration.Design
Чтобы сделать это, нужно просто просмотреть измененные файлы и найти файлы .csproj, в которых была изменена версия пакета Microsoft.VisualStudio.Web.CodeGeneration.Design. Если у вас нет контроля версий (эй, я знаю, что вы все еще существуете, луддиты! 😉), просто сравните версию указанного пакета с версией большинства ваших пакетов.
Можно попробовать понизить версию, но есть существенные изменения, поскольку Visual Studio имеет внутреннюю зависимость от определенной версии, и она изменит ее обратно.
Я упоминаю 16.2.4, но полагаю, что это может произойти и с другими версиями Visual Studio. Иногда это заставит вас обновить свои зависимости, что, я уверен, другие разработчики очень оценят…
Сработало? Дайте мне знать!
Антти Коскела – гордый кочевой разработчик полного стека из числа миллениалов и аборигенов цифровых технологий (достаточно забавных словечек? Достаточно забавных словечек!). Он работает архитектором облачных решений в инженерной компании Etteplan Oyj, в которой работает около 700 разработчиков. создание и ремонт всего, даже полуцифрового.
- Windows Forms и WPF теперь могут поддерживать множество новых вариантов использования, включая API для Windows и устройств, а также элементы управления UWP через XAML Islands.
- MSIX предоставляет новый простой способ упаковки, установки и обновления настольных приложений.
- В App Center добавлена поддержка Windows Forms и WPF, поэтому теперь разработчики могут воспользоваться несколькими службами распространения, аналитики и диагностики для проектов.
В этой статье я покажу, как включить все эти новые функции в настольные приложения и какие преимущества вы получите от этих обновлений.
Инновации в своем собственном темпе
Меньшие размеры приложений с обрезкой сборки
Чтобы включить эту функцию, добавьте этот параметр в проект и опубликуйте приложение как Автономное:
Однофайловые исполняемые файлы
Чтобы опубликовать исполняемый файл, состоящий из одного файла, задайте PublishSingleFile в проекте или в командной строке с помощью команды публикации dotnet (обратите внимание, что строка прерывается только для размещения узких столбцов в печатном журнале):
Или из консоли:
Оцените стоимость переноса
Рисунок 2. Отчет о переносимости примера приложения
Перенос с помощью Try Convert
Перенос вручную
Создайте копию текущего файла .csproj, поскольку он понадобится вам в будущем. После создания копии откройте текущий файл .csproj и замените все содержимое следующим кодом.
Для приложений Windows Forms вместо ` `` укажите следующее:
Обратите внимание, что для этого параметра должно быть установлено значение false. Для новых проектов AssemblyInfo.cs по умолчанию создается автоматически. Итак, если у вас уже есть файл AssemblyInfo.cs в проекте, вам нужно либо удалить этот файл, либо отключить автоматическое создание.
Чтобы не сломать проект, вам нужно добавить ссылки и ресурсы из старой версии файла проекта (поэтому вы его сохранили) в новый файл проекта. Скопируйте и вставьте все строки, относящиеся к
и из сохраненной копии.
Исправление ошибок переноса
Изменения конфигурации
Общими областями функций, затронутыми этим изменением, являются трассировка System.Diagnostics и клиентские сценарии WCF. Обе эти области функций ранее обычно настраивались с использованием XML-конфигурации, а теперь вместо этого их необходимо настраивать в коде. Чтобы изменить поведение без перекомпиляции, рассмотрите возможность настройки типов трассировки и WCF с использованием значений, загруженных из источника Microsoft.Extensions.Configuration или из appSettings.
Клиент WCF
Безопасность доступа для кода
Домены приложений
- Запуск кода с ограниченными разрешениями
- Включение загрузки нескольких копий сборки по отдельности
- Создание возможности выгрузки сборок
Одно из важных различий между доменами приложений и контекстами загрузки сборки заключается в том, что выгрузка домена приложения приводит к остановке всего кода в домене, в то время как выгрузка контекста загрузки сборки является совместной. Выгрузка не происходит до тех пор, пока в стеке вызовов ни у одного из потоков не появятся сборки из контекста загрузки и не появятся живые ссылки на типы из этих сборок. При попытке выгрузки важно убедиться, что сборки из контекста загрузки больше не используются.
Взаимодействие
Удаленное взаимодействие
Добавление новых возможностей в настольные приложения в Windows 10
Упаковка MSIX
На конференции Build 2018 Microsoft объявила об обновлении своей технологии упаковки и развертывания для приложений в Windows, MSIX. Эта новая система упаковки и распространения, основанная на сочетании .msi, .appx, App-V и ClickOnce, предоставляет множество полезных функций для создания более современной системы распространения программного обеспечения для разработчиков, создающих приложения для Windows. Некоторые функции, которые выделяют MSIX, включают:
Острова XAML
Рис. 3. XAML Islands в действии с новым терминалом Windows
Доступ к WinRT API
Непрерывный выпуск и мониторинг приложений с помощью Центра приложений
Управление релизами
Один из лучших способов постоянно улучшать приложение – как можно быстрее передать его пользователям. К сожалению, фрагментированные процессы и инструменты могут сделать управление выпусками своевременным и сложным.
App Center Distribute – это простое и удобное в использовании решение, позволяющее разработчикам быстро выпускать приложения и управлять версиями, которые получат ваши тестировщики и конечные пользователи. Разработчики могут создавать различные группы рассылки и приглашать своих пользователей по электронной почте, чтобы упростить управление выпусками.
Разработчик может загрузить пакет приложения (.msix, .msi, .msixupload, .msixbundle, .appx, .appxupload, .appxbundle, .zip) в App Center, выбрать группу рассылки, указать примечания к выпуску и пользователей. получит электронное письмо со ссылкой для загрузки приложения.
Отслеживание аналитики приложений
С помощью аналитики App Center разработчики могут собирать информацию, чтобы лучше понимать использование приложений, рост и тенденции. Просто интегрировав App Center SDK, данные начнут поступать на портал. Разработчики также могут отслеживать пользовательские события и присоединять свойства, чтобы получить более полное представление о действиях пользователей в приложении, как показано на рис. 4.
Рис. 4. Обзор действий приложений в App Center.
Диагностика работоспособности приложения
SDK диагностики App Center собирает журналы сбоев и ошибок и отображает их с анализом на портале App Center. Проблемы сгруппированы и предоставляют информацию, такую как количество случаев и пользователей, типы затронутых устройств и события, которые произошли до сбоя.
Рис. 5. Вкладка "Диагностика" в Центре приложений
Начало работы с Центром приложений
Центр приложений призван помочь вам максимально эффективно выполнять свою работу, предоставляя инструменты, данные и идеи, которые вам нужны, чтобы сосредоточиться на кодировании, а не на управлении процессами или копании различных инструментов для получения информации.
Вот несколько полезных ссылок:
Читайте также: