Ответы пользователя по тегу Visual Studio
  • Правильно ли объединять WPF и WinForms проекты в одно решение (solution)?

    Nipheris
    @Nipheris Куратор тега C#
    В дотнете внешние и межпроектные зависимости (PackageReference, ProjectReference) прописываются и ставятся для каждого проекта отдельно. Более того, по умолчанию каждый library-проект также становится самостоятельным NuGet-пакетом, если в настройках включить сборку последнего.

    Солюшен - это лишь примочка для объединения нескольких проектов во что-то, что можно собрать одной командой в IDE или в консоли. Ну и открывать сразу всё в IDE тоже удобно.

    Лично я рекомендую в большинстве случаев пользоваться подходом "один Git-репозиторий - один солюшен - много проектов". Репозиторий - единица версионирования (т.е. ВСЕ проекты в репе всегда имеют одинаковую версию), проект/пакет - единица управления зависимостями.

    Итого имеем следующие выводы:
    • вы собираетесь притащить к себе довольно толстые библиотеки, "подружить" которые в рамках одного исполняемого бинарника будет непросто. Т.к. для шарповых MSBuild-проектов каждый проект (csproj) собирается в отдельную сборку (assembly), то логично иметь WPF и WinForms варианты в виде отдельных проектов (и в виде двух разных бинарей на выходе)
    • если вы планируете общий релиз для обоих приложений - т.е. когда не бывает так, что допустим WPF-приложение релизится, а WinForms - нет - тогда делайте один репозиторий и один солюшен с несколькими проектами;
    • если вы планируете независимый релиз для каждого приложения - тогда другая история, но надеюсь вам это не нужно
    Ответ написан
    2 комментария
  • Как анализировать crash dumpы программы для Windows?

    Ставишь Студию с ворклоадом C++ Desktop, берёшь дамп, открываешь в Студии. Если есть файлы символов - настраиваешь пути к ним, чтобы они подтянулись при просмотра дампа.

    Чтобы символа были - нужно и релизные билды (т.е. те, которые отдаются пользователям) тоже собирать с отладочной информацией (к слову, в терминологии CMake такой тип сборки называют RelWithDebInfo) и складывать её на долговременное хранение (пока поддерживается конкретная релизая версия), см. технологии Symbol Server и SSQP.

    Чтобы было вообще круто, желательно ещё настроить автоматическое подтягивание исходников. Раньше это делалось кастомными CMD-командами, вшитыми прямо в PDB, теперь есть технология Source Link, которая с недавнего времени поддерживается и C++ным тулчейном, теперь лучше использовать её.

    А, ну и конечно же дампы нужно собирать и отправлять на сервер (если конечно стоит такая задача). В этом вам поможет либо dbghelp, либо более комплексные решения вроде CrashFix и CrashRpt.

    Это если в крупном масштабе и только про Windows + Visual Studio (ну т.е. это всё в основном Microsoft-specific). Задавайте вопросы, я расскажу детальнее если что-то непонятно.
    Ответ написан
    4 комментария
  • Как правильно перенести папку проекта?

    Nipheris
    @Nipheris Куратор тега C#
    Удалите из солюшена текущий проект, перенесите все его файлы в подпапку, добавьте проект в солюшен уже из подпапки. Затем добавьте новый проект.
    Ответ написан
    Комментировать
  • Почему VS запускает первый файл из проекта?

    ПКМ по проекту в Solution Explorer -> Set as StartUp Project
    Ответ написан
    Комментировать
  • Как удалить старую версию Visual Studio, если в инсталяторе не отображается?

    А что мешает запустить Visual Studio Professional 2017, как вы это уже делали, открыть Диспетчер задач, вкладку с процессами, и сделать Open File Location?
    Ответ написан
    Комментировать
  • Здравствуйте. Знает ли кто, как справиться с данной проблемой?

    запустите установщик Visual Studio со следующими выбранными элементами:
    Microsoft.VisualStudio.Component.VC.Tools.x86.x64

    И что вам мешает это сделать? Workload на Desktop C++ проекты установлен?
    Ответ написан
    1 комментарий
  • Как добавить директорию поиска DLL для проекта C++ в VIsual Studio?

    Nipheris
    @Nipheris Куратор тега C++
    Вам необходимо добавить директории в переменную среды PATH. Это основной способ заставить загрузчик находить их помимо расположения рядом с EXE.

    Как добавить эти директории - это другой вопрос. Конкретное решение зависит от того, в какой среде вам это нужно и какие у вас ограничения. Например, Конан умеет создавать т.н. "среду для запуска" (run environment) и создаёт специальные батники, где прописывает за вас пути к DLL-кам в пакетах. Эти батники могут "активировать" среду, прописав всё что нужно в PATH (пути к нужным DLL), в результате чего EXE-шник, использующий их, сможет их найти (точнее, системный загрузчик сможет найти), и "деактивировать" среду, чтобы вернуть PATH в исходное состояние. Это просто вам для примера решение, может быть вам понравится идея и вы сделаете такие же батники для запуска на машине разработчика или юзера.
    Ответ написан
    Комментировать
  • Правильная сборка проекта c#?

    Nipheris
    @Nipheris Куратор тега C#
    - strong name и электронная подпись - strong name давать не обязательно, а вот подписать было бы полезно;
    - нужно много чего ещё сделать, если планируете собирать краш-дампы;
    - установщик - тоже отдельная история
    Ответ написан
    6 комментариев
  • Где найти готовые сборки boost для Visual Studio 2017?

    Брать vcpkg и собрать самому парой команд.
    Ответ написан
    Комментировать
  • Как можно избавиться от подобного мусора в коде?

    Nipheris
    @Nipheris Куратор тега C#
    Создать отдельный класс для этого всего?

    Неплохая мысль. А ещё можно использовать WPF.
    Ответ написан
    Комментировать
  • Как создать и обработать событие в Windows Forms C++?

    в MyForm.h автоматически добавилось
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
      }

    Что дальше?

    Дальше
    System::Windows::Forms::MessageBox::Show("FooBar");

    в теле метода.
    Ответ написан
    2 комментария
  • Как сделать так, чтобы visual studio при {} не переносил вторую скобку на начало строки?

    1. Создаёте файл .editorconfig в корне проекта (обычно - рядом с файлом солюшена).
    2. Пишете туда:
    [*.cs]
    csharp_new_line_before_open_brace = false

    3. Переоткрываете солюшен или все .cs файлы.
    4. Профит.

    Настройки в .editorconfig имеют приоритет перед тем, что настроено у вас в Студии и предпочтительны тем, что распространяются на всех, кто работает с проектом (если данный файл коммитится в репозиторий). Если какая-то настройка не указана в .editorconfig, применяются ваши личные настройки указанные в параметрах в Студии.
    Ответ написан
    Комментировать
  • Почему не работает .NET Core 2.1?

    Вы скорее всего увидите .Net Core 2.1 только в Visual Studio 2017 15.7 Preview 1 , почитайте внимательно https://blogs.msdn.microsoft.com/dotnet/2018/04/11...
    Ответ написан
    Комментировать
  • Верно ли утверждение, что если начать писать на С# придётся платить (например IDE, Unity или что-то другое)?

    Nipheris
    @Nipheris Куратор тега C#
    После того как MS многие ключевые компоненты дотнета перевело в опен-сорс (не все конечно, но гораздо лучше чем вообще ничего), платить нужно примерно за то же, что и везде - за продвинутые возможности IDE, которые помогают ВАМ заработать деньги. Если у вас работы больше чем на 5-10 разработчиков, и соотв-но это приносит вам достаточно денег чтобы им платить и себе оставлять, то платить за эти возможности вы будете с удовольствием - всё равно время спецов уж точно дороже.

    А если нет - то оно вам и не надо. В той же Community студии и дебаггер доступен, и уже даже профайлером можно пользоваться. Нет только всяких фишечек удобных когда нужно сэкономить дорогое время или задебажить противные трудновоспроизводимые баги. В любом случае, такого жёсткого vendor-lock как был лет 10 назад, когда с .net framework соперничал только Mono, сейчас уже нет.
    Ответ написан
    Комментировать
  • Настройка manifest tool через cmake?

    Nipheris
    @Nipheris Куратор тега C++
    Как насчёт слияния кастомного манифеста из вашего проекта и дефолтового?

    CMake learned to honor *.manifest source files with MSVC tools. Manifest files named as sources of .exe and .dll targets will be merged with linker-generated manifests and embedded in the binary.
    Ответ написан
    Комментировать
  • Можно ли установить одновременно Visual Studio 2017 и Visual Studio 2015?

    Пользуюсь обеими версиями на одной машине одновременно со времени выхода релизной VS2017
    Ответ написан
    Комментировать
  • Как добавит файл манифеста в С++ проект?

    1. Создаёте в директории проекта файл, называете как вам нравится, например имя_проекта.manifest.
    2. Кладёте туда всё что вы написали.
    3. Добавляете файл в проект через Add -> Existing Item...
    4. Идёте в свойства проекта, Manifest Tool -> Input and Output -> Additional Manifest Files, прописываете туда имя вашего файла.
    5. ?????
    6. PROFIT: содержимое вашего манифеста будет СЛИТО с содержимым манифеста, который генерится по умолчанию.
    7. Вы можете проверить результат, посмотрев в ресурсы собранного EXE, или же выставить флажок Embed Manifest в No (флажок находится рядом с предыдущим) и посмотреть внутрь файла который упадёт рядом с вашим собранным EXE.
    Ответ написан
  • Как установить файлы api-*.dll?

    В установщике 2017-й Студии в Individual Components установите "Windows Universal C Runtime".
    Ответ написан
  • Как делать GLSL шейдеры???

    Nipheris
    @Nipheris Куратор тега C++
    0. Бросать ли мне OpenGL?

    Не забудьте C++ дальше учить.
    1.Возможно ли создание шейдеров OpenGL на Visual Studio?(он же вроде с Директом дружит)

    А что конкретно от Студии нужно? Файлы редактировать сможете, расширения для подсветки тоже были, думаю сможете найти. С дебагом вроде не так круто как с HLSL, но вам может пока и не надо.
    2.Какое расширение должно быть у кода, самого шейдера?

    .frag/.vert или .frag.glsl/.vert.glsl или просто .glsl, это всё условность, загружать текст шейдеров всё равно вы сами будете.
    3.Как собрать шейдер, и где мне найти линковщик, компилятор?

    glSharedSource/glCompileShader - пока этого будет вам достаточно.

    Уже бесит меня этот OpenGL. Знал что будет не просто, но чтобы настолько.

    Видимо у вас наивное представление о предмете разговора.
    OpenGL - это графическое API, которое используется как в академической, так и в профессиональной среде. Оно конечно заметно проще чем Vulkan или тем более Direct3D, но всё-таки это не учебное API. Современные версии OpenGL отвечают требованиям даже крупных игровых проектов, т.е. у современного OpenGL достаточно продвинутая архитектура, отвечающая темпам развития графического оборудования.
    Иными словами, вы выбрали в общем-то профессиональный инструмент, и вы пока что к этому не готовы. GLSL - это отдельная большая история, он требует знаний не меньше, чем весь остальной OpenGL. По языку шейдеров пишут самостоятельные книги, по нему даже соревнования проводят на всяких сценерских движухах - кто круче шейдер напишет за ограниченное время.

    Это я пишу не чтобы отбить у вас желание учить, а для того чтобы вы понимали, что в IT и программировании есть достаточно сложные и объёмные вещи, которыми с разбегу не овладеешь. Если вы ещё и C++ только начали учить, но вам тем более тяжело должно быть. Я впервые сделал что-то потребное на OpenGL только на 4-м курсе, уже чувствуя себя комфортно в плюсах.
    Ответ написан