-
Notifications
You must be signed in to change notification settings - Fork 526
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"FileNotFoundException: Could not load assembly 'System.Runtime..." during LinkAssemblies for projects that depend indirectly on System.Runtime.CompilerServices #3045
Comments
@brendanzagaeski was the test case working for you with latest xamarin-android/master (or 16.2)? It worked for me. I'm afraid that it might be mono-2019-02 that is fixing the problem here... Binlog using xamarin-android/master: msbuild.zip |
We're hitting this issue while trying to test SignalR bits against Xamarin. Is there a temporary workaround for this locally so we can continue with testing? |
Innnteresting. I hadn't tried with
|
One quick-and-dirty idea that let me stop the error in local experiments (partly just to help me double-check the role of the when working on Windows <ItemGroup>
<FilteredAssemblies Include="C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\Facades\System.Runtime.dll" />
</ItemGroup> when on macOS <ItemGroup>
<FilteredAssemblies Include="/Library/Frameworks/Mono.framework/External/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Runtime.dll" />
</ItemGroup> As a caution, until the investigation is complete for this issue, I'd be hesitant to say this is necessarily a correct fix, but I suspect it would be OK to use for temporary testing purposes. |
I think master is working, because it's just "lucky", here is a comparison: https://www.diffchecker.com/4lcQRLiN I have a local build of 16.1, and it seems that |
Fixes: dotnet#3045 In VS 2019 16.1 Preview, a project using `Microsoft.Extensions.Http` fails to build with: C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2146,5): error MSB4018: The "LinkAssemblies" task failed unexpectedly. System.IO.FileNotFoundException: Could not load assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Perhaps it doesn't exist in the Mono for Android profile? File name: 'System.Runtime.dll' at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters) at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference) at Mono.Cecil.MetadataResolver.Resolve(TypeReference type) at Mono.Cecil.ModuleDefinition.Resolve(TypeReference type) at Mono.Cecil.TypeReference.Resolve() at Java.Interop.Tools.Cecil.TypeDefinitionRocks.<GetTypeAndBaseTypes>d__1.MoveNext() at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate) at Java.Interop.Tools.Cecil.TypeDefinitionRocks.IsSubclassOf(TypeDefinition type, String typeName) at MonoDroid.Tuner.FixAbstractMethodsStep.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, ILogger logger, 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() [C:\Temp\ResolveAssembliesSystemRuntime\AndroidApp1\AndroidApp1.csproj] The problem being, that the `<ResolveAssemblies/>` MSBuild task didn't return `System.Runtime.dll` in `@(ResolvedAssemblies)`. What further complicated matters, was that the same project was working with latest xamarin-android/master (16.2)? I was only able to reproduce the problem in a test after some work to create a project that only has a `<PackageReference/>` to ``Microsoft.Extensions.Http` with no other references *at all*. I had to do some MSBuild trickery to remove `Java.Interop` and `System.Runtime` references. Looking at the dependency tree in the failing test, `System.Runtime.CompilerServices.Unsafe.dll` should be reporting a reference to `System.Runtime.dll`. Through debugging, I saw it only had a reference to `netstandard.dll`? Then I realized there were two assemblies: ~\.nuget\packages\system.runtime.compilerservices.unsafe\4.5.1\ref\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll ~\.nuget\packages\system.runtime.compilerservices.unsafe\4.5.1\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll The "ref" assembly, references `netstandard.dll` and the "lib" assembly (that we should be using) references `System.Runtime.dll`. Through further debugging, I found two bugs here: * We shouldn't call `resolver.AddSearchDirectory` until *after* we've checked if the top-level assembly is a reference assembly. We don't want a reference assembly in the search paths! * `MetadataResolver` should key its cache on the resolved path to the assembly. This allows `<ResolveAssemblies/>` to open two *different* instances of `System.Runtime.CompilerServices.Unsafe`.
…#3053) Fixes: #3045 In VS 2019 16.1 Preview, a project using `Microsoft.Extensions.Http` fails to build with: C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2146,5): error MSB4018: The "LinkAssemblies" task failed unexpectedly. System.IO.FileNotFoundException: Could not load assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Perhaps it doesn't exist in the Mono for Android profile? File name: 'System.Runtime.dll' at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters) at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference) at Mono.Cecil.MetadataResolver.Resolve(TypeReference type) at Mono.Cecil.ModuleDefinition.Resolve(TypeReference type) at Mono.Cecil.TypeReference.Resolve() at Java.Interop.Tools.Cecil.TypeDefinitionRocks.<GetTypeAndBaseTypes>d__1.MoveNext() at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate) at Java.Interop.Tools.Cecil.TypeDefinitionRocks.IsSubclassOf(TypeDefinition type, String typeName) at MonoDroid.Tuner.FixAbstractMethodsStep.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, ILogger logger, 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() [C:\Temp\ResolveAssembliesSystemRuntime\AndroidApp1\AndroidApp1.csproj] The problem being, that the `<ResolveAssemblies/>` MSBuild task didn't return `System.Runtime.dll` in `@(ResolvedAssemblies)`. What further complicated matters, was that the same project was working with latest xamarin-android/master (16.2)? I was only able to reproduce the problem in a test after some work to create a project that only has a `<PackageReference/>` to ``Microsoft.Extensions.Http` with no other references *at all*. I had to do some MSBuild trickery to remove `Java.Interop` and `System.Runtime` references. Looking at the dependency tree in the failing test, `System.Runtime.CompilerServices.Unsafe.dll` should be reporting a reference to `System.Runtime.dll`. Through debugging, I saw it only had a reference to `netstandard.dll`? Then I realized there were two assemblies: ~\.nuget\packages\system.runtime.compilerservices.unsafe\4.5.1\ref\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll ~\.nuget\packages\system.runtime.compilerservices.unsafe\4.5.1\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll The "ref" assembly, references `netstandard.dll` and the "lib" assembly (that we should be using) references `System.Runtime.dll`. Through further debugging, I found two bugs here: * We shouldn't call `resolver.AddSearchDirectory` until *after* we've checked if the top-level assembly is a reference assembly. We don't want a reference assembly in the search paths! * `MetadataResolver` should key its cache on the resolved path to the assembly. This allows `<ResolveAssemblies/>` to open two *different* instances of `System.Runtime.CompilerServices.Unsafe`.
…dotnet#3053) Fixes: dotnet#3045 In VS 2019 16.1 Preview, a project using `Microsoft.Extensions.Http` fails to build with: C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2146,5): error MSB4018: The "LinkAssemblies" task failed unexpectedly. System.IO.FileNotFoundException: Could not load assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Perhaps it doesn't exist in the Mono for Android profile? File name: 'System.Runtime.dll' at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters) at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference) at Mono.Cecil.MetadataResolver.Resolve(TypeReference type) at Mono.Cecil.ModuleDefinition.Resolve(TypeReference type) at Mono.Cecil.TypeReference.Resolve() at Java.Interop.Tools.Cecil.TypeDefinitionRocks.<GetTypeAndBaseTypes>d__1.MoveNext() at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate) at Java.Interop.Tools.Cecil.TypeDefinitionRocks.IsSubclassOf(TypeDefinition type, String typeName) at MonoDroid.Tuner.FixAbstractMethodsStep.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, ILogger logger, 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() [C:\Temp\ResolveAssembliesSystemRuntime\AndroidApp1\AndroidApp1.csproj] The problem being, that the `<ResolveAssemblies/>` MSBuild task didn't return `System.Runtime.dll` in `@(ResolvedAssemblies)`. What further complicated matters, was that the same project was working with latest xamarin-android/master (16.2)? I was only able to reproduce the problem in a test after some work to create a project that only has a `<PackageReference/>` to ``Microsoft.Extensions.Http` with no other references *at all*. I had to do some MSBuild trickery to remove `Java.Interop` and `System.Runtime` references. Looking at the dependency tree in the failing test, `System.Runtime.CompilerServices.Unsafe.dll` should be reporting a reference to `System.Runtime.dll`. Through debugging, I saw it only had a reference to `netstandard.dll`? Then I realized there were two assemblies: ~\.nuget\packages\system.runtime.compilerservices.unsafe\4.5.1\ref\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll ~\.nuget\packages\system.runtime.compilerservices.unsafe\4.5.1\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll The "ref" assembly, references `netstandard.dll` and the "lib" assembly (that we should be using) references `System.Runtime.dll`. Through further debugging, I found two bugs here: * We shouldn't call `resolver.AddSearchDirectory` until *after* we've checked if the top-level assembly is a reference assembly. We don't want a reference assembly in the search paths! * `MetadataResolver` should key its cache on the resolved path to the assembly. This allows `<ResolveAssemblies/>` to open two *different* instances of `System.Runtime.CompilerServices.Unsafe`.
…#3053) (#3062) Fixes: #3045 In VS 2019 16.1 Preview, a project using `Microsoft.Extensions.Http` fails to build with: C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2146,5): error MSB4018: The "LinkAssemblies" task failed unexpectedly. System.IO.FileNotFoundException: Could not load assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Perhaps it doesn't exist in the Mono for Android profile? File name: 'System.Runtime.dll' at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters) at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference) at Mono.Cecil.MetadataResolver.Resolve(TypeReference type) at Mono.Cecil.ModuleDefinition.Resolve(TypeReference type) at Mono.Cecil.TypeReference.Resolve() at Java.Interop.Tools.Cecil.TypeDefinitionRocks.<GetTypeAndBaseTypes>d__1.MoveNext() at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate) at Java.Interop.Tools.Cecil.TypeDefinitionRocks.IsSubclassOf(TypeDefinition type, String typeName) at MonoDroid.Tuner.FixAbstractMethodsStep.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, ILogger logger, 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() [C:\Temp\ResolveAssembliesSystemRuntime\AndroidApp1\AndroidApp1.csproj] The problem being that the `<ResolveAssemblies/>` MSBuild task didn't return `System.Runtime.dll` in `@(ResolvedAssemblies)`. What further complicated matters, was that the same project was working with latest xamarin-android/master (16.2)? I was only able to reproduce the problem in a test after some work to create a project that only has a `<PackageReference/>` to `Microsoft.Extensions.Http` with no other references *at all*. I had to do some MSBuild trickery to remove `Java.Interop` and `System.Runtime` references. Looking at the dependency tree in the failing test, `System.Runtime.CompilerServices.Unsafe.dll` should be reporting a reference to `System.Runtime.dll`. Through debugging, I saw it only had a reference to `netstandard.dll`? Then I realized there were two assemblies: ~\.nuget\packages\system.runtime.compilerservices.unsafe\4.5.1\ref\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll ~\.nuget\packages\system.runtime.compilerservices.unsafe\4.5.1\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll The "ref" assembly, references `netstandard.dll` and the "lib" assembly (that we should be using) references `System.Runtime.dll`. Through further debugging, I found two bugs here: * We shouldn't call `resolver.AddSearchDirectory()` until *after* we've checked if the top-level assembly is a reference assembly. We don't want a reference assembly in the search paths! * `MetadataResolver` should key its cache on the resolved path to the assembly. This allows `<ResolveAssemblies/>` to open two *different* instances of `System.Runtime.CompilerServices.Unsafe`.
…#3053) Fixes: #3045 In VS 2019 16.1 Preview, a project using `Microsoft.Extensions.Http` fails to build with: C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2146,5): error MSB4018: The "LinkAssemblies" task failed unexpectedly. System.IO.FileNotFoundException: Could not load assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Perhaps it doesn't exist in the Mono for Android profile? File name: 'System.Runtime.dll' at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters) at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference) at Mono.Cecil.MetadataResolver.Resolve(TypeReference type) at Mono.Cecil.ModuleDefinition.Resolve(TypeReference type) at Mono.Cecil.TypeReference.Resolve() at Java.Interop.Tools.Cecil.TypeDefinitionRocks.<GetTypeAndBaseTypes>d__1.MoveNext() at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate) at Java.Interop.Tools.Cecil.TypeDefinitionRocks.IsSubclassOf(TypeDefinition type, String typeName) at MonoDroid.Tuner.FixAbstractMethodsStep.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, ILogger logger, 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() [C:\Temp\ResolveAssembliesSystemRuntime\AndroidApp1\AndroidApp1.csproj] The problem being, that the `<ResolveAssemblies/>` MSBuild task didn't return `System.Runtime.dll` in `@(ResolvedAssemblies)`. What further complicated matters, was that the same project was working with latest xamarin-android/master (16.2)? I was only able to reproduce the problem in a test after some work to create a project that only has a `<PackageReference/>` to ``Microsoft.Extensions.Http` with no other references *at all*. I had to do some MSBuild trickery to remove `Java.Interop` and `System.Runtime` references. Looking at the dependency tree in the failing test, `System.Runtime.CompilerServices.Unsafe.dll` should be reporting a reference to `System.Runtime.dll`. Through debugging, I saw it only had a reference to `netstandard.dll`? Then I realized there were two assemblies: ~\.nuget\packages\system.runtime.compilerservices.unsafe\4.5.1\ref\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll ~\.nuget\packages\system.runtime.compilerservices.unsafe\4.5.1\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll The "ref" assembly, references `netstandard.dll` and the "lib" assembly (that we should be using) references `System.Runtime.dll`. Through further debugging, I found two bugs here: * We shouldn't call `resolver.AddSearchDirectory` until *after* we've checked if the top-level assembly is a reference assembly. We don't want a reference assembly in the search paths! * `MetadataResolver` should key its cache on the resolved path to the assembly. This allows `<ResolveAssemblies/>` to open two *different* instances of `System.Runtime.CompilerServices.Unsafe`.
…#3053) Fixes: #3045 In VS 2019 16.1 Preview, a project using `Microsoft.Extensions.Http` fails to build with: C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2146,5): error MSB4018: The "LinkAssemblies" task failed unexpectedly. System.IO.FileNotFoundException: Could not load assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Perhaps it doesn't exist in the Mono for Android profile? File name: 'System.Runtime.dll' at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters) at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference) at Mono.Cecil.MetadataResolver.Resolve(TypeReference type) at Mono.Cecil.ModuleDefinition.Resolve(TypeReference type) at Mono.Cecil.TypeReference.Resolve() at Java.Interop.Tools.Cecil.TypeDefinitionRocks.<GetTypeAndBaseTypes>d__1.MoveNext() at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate) at Java.Interop.Tools.Cecil.TypeDefinitionRocks.IsSubclassOf(TypeDefinition type, String typeName) at MonoDroid.Tuner.FixAbstractMethodsStep.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, ILogger logger, 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() [C:\Temp\ResolveAssembliesSystemRuntime\AndroidApp1\AndroidApp1.csproj] The problem being, that the `<ResolveAssemblies/>` MSBuild task didn't return `System.Runtime.dll` in `@(ResolvedAssemblies)`. What further complicated matters, was that the same project was working with latest xamarin-android/master (16.2)? I was only able to reproduce the problem in a test after some work to create a project that only has a `<PackageReference/>` to ``Microsoft.Extensions.Http` with no other references *at all*. I had to do some MSBuild trickery to remove `Java.Interop` and `System.Runtime` references. Looking at the dependency tree in the failing test, `System.Runtime.CompilerServices.Unsafe.dll` should be reporting a reference to `System.Runtime.dll`. Through debugging, I saw it only had a reference to `netstandard.dll`? Then I realized there were two assemblies: ~\.nuget\packages\system.runtime.compilerservices.unsafe\4.5.1\ref\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll ~\.nuget\packages\system.runtime.compilerservices.unsafe\4.5.1\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll The "ref" assembly, references `netstandard.dll` and the "lib" assembly (that we should be using) references `System.Runtime.dll`. Through further debugging, I found two bugs here: * We shouldn't call `resolver.AddSearchDirectory` until *after* we've checked if the top-level assembly is a reference assembly. We don't want a reference assembly in the search paths! * `MetadataResolver` should key its cache on the resolved path to the assembly. This allows `<ResolveAssemblies/>` to open two *different* instances of `System.Runtime.CompilerServices.Unsafe`.
Motivating Developer Community item: https://developercommunity.visualstudio.com/content/problem/551186/android-build-failed-on-linker-systemruntime-even.html
That report is based on the project in https://github.com/jamesmontemagno/AllExtensions-DI-IoC
This is a change in behavior between xamarin-android-9.2.3.0 and xamarin-android.9.3.0.14. I noticed a difference in the output of the
<ResolveAssemblies/>
task between those two versions, so I tested the commits between those versions that modifiedResolveAssemblies.cs
and found that this problem started with the switch to System.Reflection.Metadata in xamarin-android/master@c22475d7. I'm not sure yet if this is revealing a different problem that was in the build process for longer or if the new behavior ofResolveAssemblies
is slightly incorrect.Steps to Reproduce
Attempt to build the attached test case in the Debug configuration. This is just an empty Xamarin.Android project with the Microsoft.Extensions.Http NuGet package added.
Expected Behavior, as seen with xamarin-android/master@974cf7d
The project builds without error. The build logs show that the
<ResolveAssemblies/>
task adds System.Runtime for System.Runtime.CompilerServices:Actual Behavior in Visual Studio 2019 version 16.1 Preview 2 and xamarin-android/master@c22475d7
The
<LinkAssemblies/>
task fails because it fails to locate the System.Runtime assembly:The build log shows that
<ResolveAssemblies/>
task does not add System.Runtime for System.Runtime.CompilerServices:Log File
buildlogs.zip
The text was updated successfully, but these errors were encountered: