All posts by Brendan Zagaeski

Common issues in the Xamarin 15.2.2 release being tracked by the Xamarin team

In case it might be useful for reference, here is an update on the previous list of commonly seen issues from the Xamarin 15.2 release. Many of those issues are now resolved in the Xamarin 15.2.2 release.  This updated list gives the latest statuses and workarounds for a few remaining issues from the Xamarin 15.2 release and the Xamarin 15.2.2 release, with a focus on bug reports that have several subscribed users.

  • Bug 56787 [Xamarin.VisualStudio, Xamarin.iOS, Xamarin.Android] “Could not load file or assembly ‘Mono.Posix, Version=2.0.0.0, …'” in some cases when attempting to start debugging with breakpoints set. This happens because the Mono.Posix.dll file is missing from the Xamarin.VisualStudio installer.
    • Temporary workaround:
      1. Download the missing Mono.Posix file and unzip the archive.
      2. Right-click the Mono.Posix.dll file in Explorer and select Properties.
      3. Check the Digital Signatures tab to ensure the file shows a valid Xamarin Inc. signature.
      4. At the bottom of the General tab, if an Unblock checkbox appears, enable it and select OK. (This checkbox appears depending on how the file was downloaded.)
      5. For Visual Studio 2017, copy the Mono.Posix.dll file into the “Xamarin.VisualStudio” extension directory. For example, for a default installation of the Enterprise edition, copy the file into:
        C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Xamarin.VisualStudio
      6. For Visual Studio 2015, copy the file into the “Xamarin\Xamarin” extension directory:
        C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Xamarin\Xamarin\
      7. Quit and restart Visual Studio.
    • If these steps to do not resolve the issue in your environment, please see the bug report for information about enabling “Fusion logging” (assembly binding logging) and submitting a new bug report for further investigation.
  • Bug 56893 and Bug 56808 [Xamarin.VisualStudio, Xamarin.iOS] Breakpoints are non-functional  and exception call stacks show user code as “External Code” in certain scenarios when debugging on iOS devices and simulators with the linker enabled.
    • Possible temporary workaround: Change the DebugType to portable to more closely match the build behavior of Visual Studio for Mac.
      1. Open each project .csproj file in a text editor. For example, right-click each project in the Solution Explorer and select Unload Project, and then right-click it again and select Edit.
      2. Under the PropertyGroup for the “Debug|AnyCPU” configuration, set:
        <DebugType>portable</DebugType>
      3. Save the changes and reload the projects.
      4. Clean the solution and manually delete the “bin” and “obj” folders to remove any left-over .mdb debugger symbol files.
      5. If any of the projects use async partial methods, install the Microsoft.Net.Compilers  pre-release version 2.3.0-beta1 NuGet package (or higher) into all of the projects (to fix Roslyn issue 17934).
  • Bug 56246 [Mono, Xamarin.Android, Xamarin.iOS, Xamarin.Mac] Tracking bug for upstream Roslyn issue 17934: “error MSB6006: “csc.exe” exited with code 1″ due to KeyNotFoundException when compiling projects that include async partial methods.
    • Possible temporary workaround: Install the Microsoft.Net.Compilers  pre-release version 2.3.0-beta1 NuGet package (or higher) into all of the projects to get the pre-release Roslyn C# compiler that includes the fix.
    • Alternate temporary workaround: Switch back to mcs and xbuild.
      1. Add the following PropertyGroup element to the bottom of the .csproj file for your app project just before the closing </Project> tag:
        <PropertyGroup Condition=" '$(OS)' == 'Unix' ">
            <CscToolExe>mcs.exe</CscToolExe>
        </PropertyGroup>
      2. Disable Visual Studio > Preferences > Build > Build with MSBuild instead of xbuild. (This setting is also available in Xamarin Studio 6.3. It is disabled by default in Xamarin Studio, but some users might have enabled it by hand in the past.)
      3. Close and reopen the solution to ensure the new setting is used.
      4. Clean and rebuild the project.
    • developercommunity 63718 [Xamarin.VisualStudio] In certain environments, Visual Studio crashes often due to an unhandled exception in a Zeroconf method called by Xamarin.VisualStudio.ZeroConf.MacDiscoveryService.

Common issues from the Xamarin 15.2 release being tracked by the Xamarin team

In case it might be useful for reference, here is an in-progress list of some commonly seen issues being tracked by the Xamarin team for the Xamarin 15.2 release. The list is sorted approximately by the number of users subscribed to each bug report, and in some cases also by additional hand-tallying. The list focuses on issues where the pattern of reports suggests a change in behavior compared to the Xamarin 15.1 release. This list is not exhaustive: It does not include every issue user-submitted issue reported since the time of the Xamarin 15.2 release.

  • Bug 56275 and developercommunity 54945 [Xamarin.VisualStudio] Significant increase in the chances of hitting “Unable to copy file “obj\Debug\App1.dll” to “bin\Debug\App1.dll”. The process cannot access the file ‘bin\Debug\App1.dll’ because it is being used by another process.” and “Exceeded retry count of 10. Failed”. Under investigation.
    • A few possible temporary workarounds are discussed on the bug report.
    • One comment on the report also indicates that installing and using the Visual Studio 2017 Preview version 15.3 might resolve the issue.
  • Bug 56246 [Mono, Xamarin.Android, Xamarin.iOS, Xamarin.Mac] Tracking bug for upstream Roslyn issue 17934: “error MSB6006: “csc.exe” exited with code 1″ due to KeyNotFoundException when compiling projects that include async partial methods. Integration of the upstream Roslyn fix is in-progress.
    • Partial temporary workaround: Switch back to mcs and xbuild (see additional details below).
  • Bug 56213 [Xamarin.VisualStudio] “Can not resolve reference: C:/Windows/Microsoft.NET/Framework/v4.0.30319/de/mscorlib.resources.dll” when building or breakpoints fail to hit on iOS devices when debugging. Now RESOLVED in the source code, and will be included in an upcoming release.
  • Bug 55087 [Xamarin.Android] “System.NotSupportedException: Stack walks are not supported on this platform – System.Reflection.MethodBase.GetCurrentMethod” when attempting to debug on x86_64 Android emulators. Now RESOLVED in the source code, and will be included in an upcoming release.
    • Partial temporary workaround: Use an x86 Android emulator rather than an x86_64 Android emulator.
  • Bug 56296 [Xamarin.Forms] “MTOUCH: error MT2001: Could not link assemblies.” when attempting to link Xamarin.Forms projects that use XamlC on iOS because XamlC does not update the new default portable .pdb debug symbol files. Now RESOLVED in the source code, and will be included in an upcoming release of Xamarin.Forms.
    • Possible temporary workaround: Disable XamlC.
    • Alternate possible temporary workaround: Switch back to mcs and xbuild (see additional details below).
  • Bug 56240 [Xamarin.Android] Performance degradation when using System.Linq.Expressions in Xamarin.Android 7.3. A candidate change has been added and will be included in an upcoming release of Xamarin.Android.
  • Bug 56238 and developercommunity 49033 [Xamarin.Android] App exits on launch or fails to hit breakpoints when debugging due to change in default build behavior when the Optimize MSBuild property is not explicitly set. Now RESOLVED in the source code, and will be included in an upcoming release.
    • Workaround: Explicitly set the Optimize property to False in the .csproj file. See the answer on the developercommunity item for a few additional details.
  • Compatibility change: [Xamarin Studio] Breakpoints no longer work for certain Xamarin project types and scenarios in Xamarin Studio 6.3 due incomplete support for the new default portable .pdb format generated by Mono 5.0.
    • Recommended solution: Install and use Visual Studio for Mac now that it is generally available and the recommended environment for Xamarin development on Mac.
    • Alternate possible temporary workaround: Switch back to mcs and xbuild (see additional details below).
  • Bug 56192 [Xamarin.VisualStudio] MultiDex is disabled after saving changes to Xamarin.Android project due to incorrect MSBuild property name <AndroidEnableMultipleDex>. Now RESOLVED in the source code, and will be included in an upcoming release.
    • Workaround: In the .csproj file, replace all occurrences of AndroidEnableMultipleDex with the correct property name AndroidEnableMultiDex using a text editor.
  • Bug 56220 [Xamarin.iOS, Xamarin.VisualStudio] “The item “C:….nuget\packages\Autofac\4.5.0\lib\netstandard1.1\Autofac.dll” in item list “ReferenceCopyLocalPaths” does not define a value for metadata “ResolvedFrom””. Under investigation. A few possible temporary workarounds are discussed on the bug report.
    • A possible temporary workaround is mentioned on the bug report.

Temporarily switching back to mcs and xbuild

The Xamarin 15.2 release includes Mono 5.0, which enables the Roslyn csc C# compiler by default and deprecates the use of xbuild in favor of msbuild. For the Xamarin toolchain, this adds C# 7 support and changes the default debugging symbol format from .mdb files to portable .pdb files. And Visual Studio for Mac uses msbuild by default when building projects.

The change from mcs to csc and xbuild to msbuild is related to several of the issues listed above. One potential workaround in those cases is to switch back to the earlier combination of mcs and xbuild without downgrading Mono or the Xamarin toolchain. As a caution, this is not a tested scenario, so although this approach has been reported to work well so far, it does still have a chance of hitting other secondary errors.

  1. Add the following PropertyGroup element to the bottom of the .csproj file for your app project just before the closing </Project> tag:
    <PropertyGroup Condition=" '$(OS)' == 'Unix' ">
        <CscToolExe>mcs.exe</CscToolExe>
    </PropertyGroup>
    
  2. Disable Visual Studio > Preferences > Build > Build with MSBuild instead of xbuild.(This setting is also available in Xamarin Studio 6.3. It is disabled by default in Xamarin Studio, but some users might have enabled it by hand in the past.)
  3. Close and reopen the solution to ensure the new setting is used.
  4. Clean and rebuild the project.

Technical Bulletin: Xcode 8.3

As announced on Apple’s developer news site, Apple has just released Xcode 8.3 final.

Xamarin is proceeding as usual to test for compatibility and publish an updated version of Xamarin.iOS for any modified or new APIs in Xcode. Keep an eye on this blog for status updates.

UPDATE March 28: Corresponding new versions of Xamarin.iOS, Xamarin for Visual Studio, and Xamarin Studio are now available. See the release announcement for additional details.

Technical Bulletin: Xcode 8.2

As announced on Apple’s developer news site, Apple has just released Xcode 8.2 final.

Xamarin is proceeding as usual to test for compatibility and publish an updated version of Xamarin.iOS for any modified or new APIs in Xcode. Keep an eye on this blog for status updates.

UPDATE: Corresponding new builds of Xamarin.iOS, Xamarin for Visual Studio, and Xamarin Profiler are now available. More info can be found here.

Technical Bulletin: Xcode 8.1 GM

As announced on Apple’s developer news site, Apple has just released the Xcode 8.1 GM seed.

Due to a few changes in the Xcode 8.1 GM version as compared to the previous Beta, Xamarin recommends against updating to Xcode 8.1 GM until a corresponding Xamarin compatibility release has been provided. Work is in progress to publish the core compatibility changes needed. The fixes for 45676 and 45855 are particularly important to make it straightforward to deploy to iOS devices and simulators without tricky workarounds.  New builds will tentatively be available before the end of the week.


Higher visibility known issues

  • [Xamarin for Visual Studio]45676 – “Failed to launch the simulator: Could not load the framework ‘libswiftAppKit.dylib’ … Library not loaded: @rpath/libswiftQuartzCore.dylib” when attempting to launch iOS 10.1 simulator.
  • [Xamarin.iOS]45855 – “Failed to launch the simulator: Could not load the framework ‘libswiftos.dylib’ (path: /Applications/Xcode.app/Contents/Frameworks/libswiftos.dylib): not found.” when attempting to launch iOS 10.1 simulator. Note: The public bug report mentions a fairly simple although inelegant workaround.
  • 45859 – “Error MT0074: Xamarin.iOS 10.0.2 does not support a deployment target of 10.1 for iOS (the maximum is 10.0).” when attempting to build a new template project that uses the new default deployment target of 10.1
    • Workaround: Open the Info.plist file in the plist editor and change the deployment target to 10.0 or lower instead of 10.1.
  • [Xamarin Studio], [Xamarin for Visual Studio] – 45861, 45862 – “May Slow Down Your iPhone … The developer of this app needs to update it to improve its compatibility.” because of default “i386” supported architecture setting in the iPhoneSimulator configuration on new projects
    • Fix: Change Project options > iOS Build > Supported architectures to x86_64 (instead of the default i386) for the iPhoneSimulator configuration.
  • [Xamarin.iOS] – 45899 – “error HE0035: Could not find a paired iPhone device for the Watch ‘watchOS 3.1 (14S471a) – Apple Watch – 42mm’ (C64439C5-9D9C-4B5C-B3B5-F77BBAA5B669)” when attempting to launch watch app on series1 sim

Intentional changes in Xcode 8.1 itself
As usual, be sure to also check the upstream release notes.

  • “May Slow Down Your iPhone … The developer of this app needs to update it to improve its compatibility.” alert dialog will be displayed when 32-bit applications are launched on 64-bit devices and simulators.
    • Fix: Be sure to configure your project to provide a 64-bit build for 64-bit devices.

Edits on this post

  • Oct 25, 2016: Add Bug 45899.

Technical Bulletin: Android SDK Build-tools 24

Version “24” of the Android SDK Build-tools package contains an upstream bug in aapt that can cause at least 2 errors:

  • ​””aapt.exe” exited with code -1073741819″ (This error can also appear if the Android SDK Build-tools version is not compatible with the installed version of Xamarin.Android. But in this particular case the error is due to the upstream bug.)
  • “The file “obj\Debug\android\bin\packaged_resources” does not exist.”

This bug has been fixed in Android SDK Build-tools 24.0.1.

Recommended fix: Uninstall Android SDK Build-tools version 24 using the Android SDK Manager.


Another separate issue is that versions 24 and higher of the Android SDK Build-tools package require Java JDK 8 or higher. This can cause at least 1 error:

  • “java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0”

Possible ways to fix:

  • Update to Java JDK 8, and then make sure that JDK 8 is selected in the Xamarin preferences:
    • Visual Studio: Tools > Options > Xamarin > Android Settings > Java Development Kit Location.
    • Xamarin Studio (on Mac): Xamarin Studio > Preferences > Projects > SDK Locations > Android > Java SDK (JDK).
  • Or uninstall all Android SDK Build-tools versions 24 and higher via the Android SDK manager.
  • Or set the AndroidSdkBuildToolsVersion MSBuild property to an earlier version. For example, if you also have version 23.0.3 installed, you could add the following line within the top <PropertyGroup> element in the Android project .csproj file:
    <AndroidSdkBuildToolsVersion>23.0.3</AndroidSdkBuildToolsVersion>

(Edited on July 14, 2016: Simplify the recommendations and provide a link to the upstream bug.)
(Edited on July 25, 2016: Mention the new version Android SDK Build-tools 24.0.1.)
(Edited on August 11, 2016: Add a note about checking the JDK version in the Xamarin preferences.)