Xamarin Android链接无法访问文件

Ste*_*eve 18 c# android visual-studio xamarin xamarin.forms

我有一个Xamarin Android项目,我试图使用Sdk和用户程序集链接.

如果我将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()
Run Code Online (Sandbox Code Playgroud)

AppName.Core.dll 是我的解决方案中的另一个库项目,设置为NetStandard 2.0.

我已经查看了许多关于类似问题的其他错误报告和论坛帖子,但大多数似乎都与Visual Studio 15.5.1之前的错误相关,后者已被修复.

无论如何,我已尝试过在这些链接中建议的每个解决方案,包括:

  • 关闭并重新打开Visual Studio
  • 删除/ bin和/ obj文件夹
  • 以管理员身份打开Visual Studio
  • 在VS关闭的情况下从命令提示符运行MsBuild

以及上述的各种组合.

我的自定义linker.xml包含我的库项目的异常:

<?xml version="1.0" encoding="utf-8" ?>
<linker>    
    ...    
    <assembly fullname="AppName.Core" ></assembly>        
    ...        
</linker>
Run Code Online (Sandbox Code Playgroud)

至于这一点,我似乎已经用尽了所有可用的选项,并且没有更接近可行的解决方案.关于解决方案,变通方法或其他调试路径的建议将非常受欢迎.

我的Android选项配置:

Android选项

版本信息:

  • Visual Studio版本:15.5.6
  • Xamarin Forms版本:2.5.0.280555
  • Xamarin版本:26.1.0.1

小智 1

请参考这个链接:

https://forums.xamarin.com/discussion/32976/updating-xamarin-broke-the-build-process-the-process-cannot-access-the-file-appname-dll-mdb

有两种解决方案:

  1. 关闭 Visual Studio
  2. 删除bin\Debug文件夹中的所有文件
  3. 删除 .suo 文件
  4. 以管理员模式打开 Visual Studio

如果您有 Xamarin Studio,请尝试以下操作:

  1. 在 XamarinStudio 中打开解决方案并将其部署到 Android 手机
  2. 关闭 XamarinStudio
  3. 在 VisualStudio 中打开解决方案并将其部署到 Android 手机

希望这可以帮助!!