Я работаю над приложением Hololens с использованием Unity 2018.2.20f1.Я создаю приложение для UWP из Unity без проблем.Однако после открытия сгенерированного решения в VisualStudio 2017 (Community Edition) и попытки его построения процесс сборки завершается с ошибками:
Severity Code Description Project File Line Suppression State
Error MSB3073 The command ""D:\Projects\VSProjects\VirtualPrague\Il2CppOutputProject\\IL2CPP\build\il2cpp.exe" --libil2cpp-static --compile-cpp -architecture=x86 -configuration=Release -platform=winrt -outputpath="D:\Projects\VSProjects\VirtualPrague\\build\bin\Win32\Release\GameAssembly.dll" --data-folder="D:\Projects\VSProjects\VirtualPrague\\build\bin\Win32\Release\\" -cachedirectory="D:\Projects\VSProjects\VirtualPrague\\build\obj\il2cppOutputProject\Win32\Release\\" -generatedcppdir="D:\Projects\VSProjects\VirtualPrague\Il2CppOutputProject\\Source" --additional-defines=WINDOWS_UWP --additional-defines=UNITY_UWP --additional-defines=UNITY_WSA_10_0 --additional-defines=UNITY_WSA --additional-defines=UNITY_WINRT --additional-defines=PLATFORM_WINRT -dotnetprofile=unityjit -verbose --map-file-parser="D:\Projects\VSProjects\VirtualPrague\Il2CppOutputProject\\IL2CPP\MapFileParser\MapFileParser.exe"" exited with code -532462766. Il2CppOutputProject C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets 44
и
Severity Code Description Project File Line Suppression State
Error LNK1181 cannot open input file 'D:\Projects\VSProjects\VirtualPrague\build\bin\Win32\Release\GameAssembly.lib' VirtualPrague D:\Projects\VSProjects\VirtualPrague\VirtualPrague\LINK 1
В выходных данных есть несколько исключений, подобных этому:
1>il2cpp.exe didn't catch exception: System.IO.IOException: The process cannot access the file 'C:\Users\dev\AppData\Local\Temp\tmpDE97.tmp' because it is being used by another process.
1> at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
1> at System.IO.File.InternalDelete(String path, Boolean checkHost)
1> at Unity.IL2CPP.Shell.Execute(ExecuteArgs executeArgs, IExecuteController controller)
1> at Unity.IL2CPP.Building.CppProgramBuilder.PostprocessObjectFiles(HashSet`1 objectFiles, CppToolChainContext toolChainContext)
1> at Unity.IL2CPP.Building.CppProgramBuilder.Build(IBuildStatistics& statistics)
1> at il2cpp.Program.DoRun(String[] args)
1> at il2cpp.Program.Run(String[] args)
1> at il2cpp.Program.Main(String[] args)
Исключения одинаковы, но были выброшены для разных файлов.Я попытался переустановить Visual Studio и смог получить сборку.На следующий день я включил компьютер, и эта ошибка вернулась.Я остановил все экземпляры VS и обработал их из диспетчера задач, удалил все файлы из папки Temp и сумел получить сборку еще пару раз.Затем эта ошибка вернулась.
Из того, что я могу сказать, в процессе сборки Visual Studio создает некоторые файлы * .tmp и по какой-то причине считает, что его использует другой процесс.
ЛюбойИдея, почему это происходит и как это можно решить?
Большое спасибо!
Редактировать: Итак, вот что я сделал до сих пор (это скорее обходной путь, а не решение)
- Удаление vs и unity
- Очистка реестра с помощью ccleaner и Advanced Uninstaller Pro
- Установка vs и Unity
Каждый разЯ хочу получить сборку I,
- Закрыть все экземпляры против
- Очистить временную папку (C: \ Users \ dev \ AppData \ Local \ Temp)
- Удалить предыдущее против решения
- Сборка из Unity
- Запуск от имени администратора
- Сборка и развертывание решения из vs
И это работает длясамое время.Кроме того, иногда помогает изменение конфигурации решения (от отладки до выпуска и наоборот).