SDK とユーザー アセンブリのリンクを使用しようとしている Xamarin Android プロジェクトがあります。
Android プロジェクトを Sdk アセンブリ リンクのみに設定すると、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
ベストアンサー1
こちらのリンクを参照してください:
解決策は2つあります。
- Visual Studioを閉じる
- bin\Debugフォルダ内のすべてのファイルを削除する
- .suoファイルを削除する
- Visual Studioを管理者モードで開く
Xamarin Studio をお持ちの場合は、これを試してください:
- XamarinStudioでソリューションを開き、Androidスマートフォンにデプロイします。
- XamarinStudioを閉じる
- VisualStudioでソリューションを開き、Android Phoneにデプロイします。
お役に立てれば!!