System.IO.IOException во время процесса сборки в VisualStudio 2017 - PullRequest
0 голосов
/ 15 февраля 2019

Я работаю над приложением 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 и по какой-то причине считает, что его использует другой процесс.

ЛюбойИдея, почему это происходит и как это можно решить?

Большое спасибо!

Редактировать: Итак, вот что я сделал до сих пор (это скорее обходной путь, а не решение)

  1. Удаление vs и unity
  2. Очистка реестра с помощью ccleaner и Advanced Uninstaller Pro
  3. Установка vs и Unity

Каждый разЯ хочу получить сборку I,

  1. Закрыть все экземпляры против
  2. Очистить временную папку (C: \ Users \ dev \ AppData \ Local \ Temp)
  3. Удалить предыдущее против решения
  4. Сборка из Unity
  5. Запуск от имени администратора
  6. Сборка и развертывание решения из vs

И это работает длясамое время.Кроме того, иногда помогает изменение конфигурации решения (от отладки до выпуска и наоборот).

...