2016-09-27 2 views
0

Как Unreal Engine удается запускать сборки в Visual Studio, несмотря на то, что он работает в отдельном процессе?Как Unreal Engine взаимодействует с Visual Studio 2015?

Я думаю, что он может создавать файлы и перезагружать проект, даже открыть файл по определенной строке!

Можно ли управлять ВС из другого приложения? Я не могу найти никакой информации о сокете или любом другом IPC-механизме, который позволяет VS.

ответ

1

Что касается UE4

Он не общается с процессом Visual Studio. Вот что происходит в описанных ситуациях:

  1. Строительство. Если вы имеете в виду перекомпилировать свой проект на лету. Это то, что происходит:

    [2016.09.28-08.51.49:868][298]Launching UnrealBuildTool... [D:/_UE4/4.12.5_from_source/Engine/Binaries/DotNET/UnrealBuildTool.exe MyProject -ModuleWithSuffix MyProject 1497 Win64 DebugGame -editorrecompile -canskiplink "C:/MyProject.uproject" -2015] 
    

    Так UE4 просто вызывает один из инструментов, который строит свой проект и загружает новые библиотеки на лету. Внутри UnrealBuildTool вы можете найти ссылки на VS компилятор:

    string CompilerExe = Path.Combine(WindowsPlatform.GetVSComnToolsPath(WindowsCompiler.VisualStudio2015), "../../VC/bin/cl.exe"); 
    

    Загрузка библиотеки DLL во время выполнения также решаема.

  2. Создание проектов VS. Это можно сделать программно, есть guide on MSDN

  3. Создание и открытие файлов. Создание файлов очень просто. И вы можете открыть его, просто вызвав vs executable с аргументом имени файла. Что касается конкретной строки, я не уверен, что это возможно. Когда я нажимаю Перейти к определению внутри чертежа это просто открытие другого экземпляра Visual Studio с открытым файлом. Но я не уверен, может быть аргумент командной строки, который переместит вас в определенную строку.

Заключение

Так что я не думаю, что можно общаться с запущенным Visual Studio и Unreal не делает этого. Это просто использует инструменты, предоставляемые Visual Studio для выполнения этой работы. Я рекомендую проверить исходный код инструментов UE4, это просвещает.