У меня есть проект Xamarin для Android, который я пытаюсь использовать с помощью Sdk и User Assembly.
Если я настрою проект Android только на Sdk Assembly Linking, APK будет создан и развернут успешно и будет работать.
Однако, когда я устанавливаю ссылку Sdk и User Assembly, без каких-либо других изменений, я получаю следующую ошибку только при развертывании. Решение строится успешно.
The "LinkAssemblies" task failed unexpectedly.
System.IO.IOException: The process cannot access the file '<path-to-project>\AppName\AppName.Android\obj\Release\android\assets\AppName.Core.dll' because it is being used by another process.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at Mono.Cecil.ModuleDefinition.Write(String fileName, WriterParameters parameters)
at Mono.Linker.Steps.OutputStep.WriteAssembly(AssemblyDefinition assembly, String directory)
at Mono.Linker.Steps.OutputStep.OutputAssembly(AssemblyDefinition assembly)
at Mono.Linker.Steps.OutputStep.ProcessAssembly(AssemblyDefinition assembly)
at Mono.Linker.Steps.BaseStep.Process(LinkContext context)
at Mono.Linker.Pipeline.Process(LinkContext context)
at MonoDroid.Tuner.Linker.Process(LinkerOptions options, LinkContext& context)
at Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res)
at Xamarin.Android.Tasks.LinkAssemblies.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()
AppName.Core.dll
- это еще один проект библиотеки в моем решении, который настроен как NetStandard 2.0.
Я просмотрел многие другие сообщения об ошибках и сообщения на форуме о подобной проблеме, но большинство из них связано с более ранней ошибкой с Visual Studio 15.5.1, которая с тех пор была исправлена.
- Основной отчет об ошибке Xamarin: https://bugzilla.xamarin.com/show_bug.cgi?id=56275, но был разрешен в VS 15.2.
- Тема форума (https://forums.xamarin.com/discussion/32976/updating-xamarin-broke-the-build-process-the-process-cannot-access-the-file-appname-dll-mdb) также говорит о аналогичной проблеме, разрешенной в VS 15.5.1.
- Другие вопросы SO относятся к старым версиям Xamarin или VS или к неприемлемым решениям (например, просто отключению связи):
Несмотря на это, я пробовал практически каждое решение, предлагаемое в этих ссылках, включая:
- закрытие и повторное открытие Visual Studio
- удаление /bin и /obj папок
- открытие Visual Studio в качестве администратора
- запуск MsBuild из командной строки с закрытым VS
Как и различные комбинации вышеизложенного.
Мой пользовательский linker.xml содержит исключение для моего проекта библиотеки:
<?xml version="1.0" encoding="utf-8" ?>
<linker>
...
<assembly fullname="AppName.Core" ></assembly>
...
</linker>
Поскольку этот момент я, кажется, исчерпал все доступные варианты и не приближаюсь к работоспособному решению. Предложения по решениям, обходным решениям или другим путям отладки, которые следует соблюдать, будут оценены наиболее высоко.
Мои настройки Android Android:
Информация о версии:
- Версия Visual Studio: 15.5.6
- Версия Xamarin: 2.5.0.280555
- Версия Xamarin: 26.1.0.1