我有一个 Xamarin Android 项目,我正在尝试使用 Sdk 和 User Assembly 链接。
如果我将 Android 项目设置为仅 Sdk Assembly Linking,则 APK 会成功创建和部署并且可以正常工作。
但是,当我设置 Sdk 和用户程序集链接时,没有其他更改,仅在部署时出现以下错误。解决方案构建成功。
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
- 在 VS 关闭的情况下从命令提示符运行 MsBuild
以及上述的各种组合。
我的自定义 linker.xml包含我的库项目的异常:
<?xml version="1.0" encoding="utf-8" ?>
<linker>
...
<assembly fullname="AppName.Core" ></assembly>
...
</linker>
在这一点上,我似乎已经用尽了所有可用的选项,并且离可行的解决方案还差得远。我们将不胜感激有关解决方案、变通办法或其他调试路径的建议。
我的 Android 选项配置:
版本信息:
- Visual Studio 版本:15.5.6
- Xamarin 表单版本:2.5.0.280555
- Xamarin 版本:26.1.0.1