Xamarin Studio 5.10
Xamarin Studio has a new licensing model.
- Introducing Xamarin Studio Community Edition. A new, freely available version of Xamarin Studio for indie developers available under similar terms to Visual Studio Community.
- Existing Xamarin Indie, Business and Enterprise licenses will continue to work and have the features that are entitled under the existing license.
- Windows users with Visual Studio Professional or Visual Studio Enterprise installed, or linked to their Xamarin account will be able to use Xamarin Studio at the Professional or Enterprise level.
- Mac users with Visual Studio Professional or Visual Studio Enterprise linked to their Xamarin account will be able to use Xamarin Studio at the Professional or Enterprise level.
- Other users who have either Visual Studio Community or no Visual Studio edition installed will be able to use Xamarin Studio at the Community level. The same applies to users who also do not have a Visual Studio license linked with their Xamarin Account.
- Xamarin Studio on Windows will no longer support trials. Any existing trial will no longer work. To continue to trial Xamarin on Windows users should start a Visual Studio trial and use Xamarin within Visual Studio instead.
- Fixed: UnhandledException when publishing AdHoc build (iTunesMetadata.plist already exists).
- Fixed: Xamarin Studio would lock up periodically when querying iOS devices.
- Fixed: Device specific builds would fail for specific iPad versions.
- Fixed: Crash in debugger after pausing.
- Fixed: Using the open files selector to change file would not update the text editor.
- Fixed: Xamarin Studio could crash when displaying tooltips.
- Updated: Licence information - see About Xamarin Studio.
- Fixed: iPad Pro support.
- Fixed: Asset placeholders for iPad Pro launcher images were missing.
- Fixed: NSLocationAlwaysUsageDescription and NSLocationWhenInUseUsageDescription were not displayed correctly in the Info.plist.
- Fixed: IpaIncludeArtwork was set incorrectly in the project file.
- Fixed: The new project dialog and plist editor combos don't show iOS 9.1 with the latest Xcode 7.2.
- Fixed: Device specific builds could fail if the project was configured for 64bit only.
- Fixed: When creating a new Xamarin.Forms app the initialization call was missing from the Android app.
- Fixed: The AOT checkbox in Android build settings should be marked as experimental.
- Fixed: When adding Insights to a new Xamarin.Forms app the Insights NuGet was not added to the PCL project.
- Fixed: When publishing an app that did not have Insights enabled the publishing wizard would fail with "Could not Upload to Xamarin Insights".
- Fixed: Initialization code for Xamarin.Insights should fully qualify the API key identifier.
- Fixed: mdtool would fail to build a project that had Xamarin.Insights enabled.
- Fixed: Xamarin.Insights support is now disabled by default in the new project dialog.
- Fixed: Xamarin.Insights documentation links in the new project dialog.
- Fixed: Using the Blame context menu was awkward and unreliable.
- Fixed: Some Version control options were disabled even though they were available in the context menu.
- Fixed: [Git] Commits are reordered when rebasing.
- Improved: UITest NuGets are now updated for new projects.
- Fixed: The Task Pad can no longer be sorted by Completed.
- Fixed: Editing user tasks in tasks pad when sorted modifies wrong task.
- Fixed: Projects on Windows with C# 6.0 features would fail to compile.
- Fixed: F# Mac apps were not setting the Application Name and Bundle Identifier correctly.
- Fixed: Rendering issues in the status bar of the Test Results Pad.
- Fixed: The Locals Pad would append duplicate items when the Call Stack was doubled clicked.
- Fixed: Importing a .mdpolicy file with no name would throw an exception.
- Fixed: Rendering issue with checkboxes in settings.
- Fixed: Xamarin Studio would crash under certain circumstances when using Global Search.
- Fixed: Rendering issue with toolbar icons when running on El Capitan.
- Fixed: Xamarin Studio could not create a project in a directory with certain characters in it.
- Fixed: A packaging issue could cause Xamarin Studio to crash.
- Fixed: Menu items remain disabled after showing a dialog in some circumstances.
- Fixed: Multiple copies of the same modal dialog can be made visible at the same time.
- Fixed: Event Args or Event Handlers are not created when adding a Web Reference.
- Fixed: Certain unsupported or invalid C# construct cause Xamarin Studio to hang.
- Fixed: Xamarin Studio may crash if custom builds of libraries used by Mono are installed in the system.
- Fixed: The "open files" drop down selector in the document tab bar does not correctly switch files.
- Fixed: Xamarin Studio would query the java version excessively.
- Fixed: An issue where editing user tasks in tasks pad could modify the wrong task when the tasks were sorted .
- Fixed: The 'Content Stretch' property did not work reliably. Now it does.
- Fixed: ViewControllers should always have the correct Simulated Metrics applied now.
- Fixed: Sometimes deleting a View from a ViewController would not delete the corresponding 'Outlet', if one existed.
- Fixed: The iOS Designer was unable to open iPad xib files. Now these files will be correctly detected as 'xib' files and will render in the surface.
- Fixed: Fixed an issue where some storyboards would not render when iOS9 or newer was selected.
- Fixed: The Z-Order for individual ViewControllers was not being set/maintained correctly. It will be now!
- Fixed: Incorrect (CloudKit) entitlement prevents distribution when using “Archive for Publishing”
- iOS Designer
- Android Designer
- Cross Platform
- Xamarin Insights
- Xamarin Test Cloud
- Code Analysis
- Version Control
- Source Code Editing
- Unit Testing
- Other bug fixes and improvements
- Known Issues
New extension project creation wizard
This wizard can be used to create an extension project and bind it to an existing iOS app project.
iOS apps are typically built for multiple architectures so that they can run on a range of devices. However, each additional architecture substantially increases the time taken by the AOT compilation, and increases the size of the app bundle and hence the deployment time.
At development time, users usually iterate using a single target device. The new Device specific builds option causes the build to be optimized for that device, substantially improving the development experience, while preserving existing multi-architecture behaviour for release builds, and ensuring everything works correctly if the user switches device at development time.
This option can be set in the project options dialog, and it is enabled by default for Debug builds.
New Organization Identifier field
On iOS the bundle identifier is now generated from the organization identifier which is shared across all wizards and saved every time. This allows projects to be created with an always valid identifier.
Changes to iOS Project Templates
All the iOS Classic API templates and the Unified API Empty Project template have been removed. The names of iOS Tests templates have been changed.
Changes to iOS File Templates
The iOS File Templates are now using size classes.
Full Xib and Xib Splash Screen support
We're pretty excited to finally ship full support for Xib files in this release. You can edit and interact with xib files just like you already could with storyboard files. This includes full support for designing xib splash screens.
Faster hi-dpi design surface
Just like the Android Designer, the design surface has been rewritten to take advantage of high performance, hardware accelerated APIs. When a hi-dpi display is attached, the design surface will switch to hi-dpi mode and will render higher quality images. The new surface should use less memory, feature much smoother scaling/zooming and also be significantly faster when panning around a large storyboard. If you are using a touchpad you can zoom and pan using the standard gestures. If you are still on a lo-dpi display you should still notice an improvement in the quality of the images on the design surface.
We've worked hard on tweaking every aspect of the initialization process so that the time between double clicking a storyboard and seeing it display on-screen is as short as possible. Both the first launch time and subsequent re-launch times should be noticably shorter, especially with large storyboards. We have also fixed many cases which would cause initialization to time out and display an error.
- Faster refreshing when an item is modified on the design surface.
- Fixed several cases where the design surface would not react when the mouse button was released.
- Fixed several cases where simulated metrics were not being set correctly.
- Significantly improved support for property variations in the property panel.
- All accessibility properties are supported.
- Improved support for Unwind and Embed segues.
- Retina image resources should be handled correctly now.
- Fixed many cases where the property panel would not write the correct value to the storyboard/xib file.
- Fixed several places where the wrong default value was showing up in the property panel.
- Improved support for changing between Plain text and Attributed text for properties supporting both.
- Resize handles will only appear when they can modify the size of the View they're attached to.
- Custom properties of type nint and nfloat are now supported by the property panel.
- All performance issues associated with the Outline panel have been fully resolved.
- Constraints are now grouped in the Outline panel.
- Fixed several issues with copy/paste which could corrupt the storyboard.
- Improved support for fixing the frame for underconstrained items.
- AwakeFromNib should be reliably invoked for custom controls in the design surface.
- Improved misplacement handling for under-constrained/over-constrained items and when changing size classes.
- The designer should never overwrite existing files when generating new classes.
- Full support for WatchOS2 rendering as of the latest Xcode 7 beta release.
- Dozens more under the hood changes to fix crashes, exceptions and quirks
New Organization Identifier field
On Android the package name is now generated from the organization identifier which is shared across all wizards and saved every time. This allows projects to be created with an always valid identifier.
- Allow choosing supported ABIs in Debug builds.
- Allow debugging of Android Application with no activities. This allows debugging of Watch faces in Android Wear.
- Added UI to enter TSA url when signing the package during distribution (the signing page of the distribution wizard)
- Added command for opening the folder where an archive is located.
- Added a "Reveal in Finder" button for the keystore in preferences, and a new context menu action to show the alias details, so that the user can copy whatever is needed for the Google API console.
- Project templates updated to use mipmaps instead of drawables for application icons.
- Fixed: Signing packages with a keystore with SHA1withDSA fails.
- Fixed: Minimum Android Version and Target Android Version combobox settings do not work.
- Fixed crash when signing Android app.
- Fixed: Properties/AssemblyInfo.cs missing from Android Library.
- Fixed: Android axml templates use deprecated "fill_parent" instead of "match_parent".
- Fixed: App Identifier should be created by using App Name after stripping off leading and trailing whitespaces.
- Fixed: "Xamarin Android Player is already running" message keeps showing up for every test being run.
- Fixed: Unable to reference main project classes in Unit Tests.
- Fixed: Android log pad behaves strangely when device is disconnected. Clear the device if it is no longer connected to ABD.
Faster hi-dpi design surface
Just like the iOS designer, the design surface has been rewritten to take advantage of high performance, hardware accelerated APIs. When a hi-dpi display is attached, the design surface will switch to hi-dpi mode and will render higher quality images. The new surface should use less memory and feature much smoother scaling/zooming. If you are using a touchpad you can zoom and pan using the standard gestures. If you are still on a lo-dpi display you should still notice an improvement in the quality of the images on the design surface.
Material Design helpers
A new set of design tools has been added to ease creating layouts that follow Google's Material Design specification. Those tools are only available or most complete when the designer rendering target is at least Lollipop (i.e. Android 5.0 / API level 21). Support for appcompat-based layout will come in a future release.
There is now an option to create a grid with a set size that will be overlayed on your layout for easier individual widget placements. Custom spacings and keylines can also be defined depending on your layout requirements.
Entries in the property panel that accept a color value possess an extra action button to pick a color straight from Google's Material color palette.
Similarly, you can also pick up a pre-defined text appearance following Google recommendation for legibility and text harmony in the corresponding property entry. The text variants are displayed using the currently selected theme information for better previewing.
You can edit and visualize the dominant colors of your Material-derived theme directly from the designer and save the result in your theme resource file.
Property panel improvements
The property panel will warn you when incompatible values are provided for a property or when the resource it references is invalid or doesn't exist. It will now also offer autocompletion for compatible resource references.
The toolbar has been refreshed to be more compact and streamlined with the rest of the IDE experience.
- Support for Lollipop new widgets and attributes
- Support for Marshmallow rendering
- The designer displays a warning if resources errors could prevent correct rendering
- Editing text entries on the surface will try to use the same font and text style as on Android
New project creation wizard
The new mac wizard comes with a new Cocoa App template including storyboard and NSDocument support. The wizard allows you to do several things:
- Use a different application name for the dock’s app icon. Once the checkbox “Use a Different Application Name in Dock” is checked the UI will let you use different names and show them on the right side of the wizard.
- Create a Document-Based Application. When the option is checked, the wizard will let you name your document extension and add NSDocument support to the new project. You can see the extension name in the advanced category of the Info.plist file.
- Select the minimum target you want to support. Note that the list has very explicit names for each version.
- The bundle identifier is now generated from the organization identifier which is shared across all wizards and saved every time. This allows projects to be created with an always valid identifier.
Changes to Mac Templates
All the Mac Classic API templates and the Unified API Empty Project template have been removed. Note that you can still access the Classic API templates when adding a new project to an existing solution.
New Cross platform Games template
There are two new Cross Platform templates targeting iOS and Mac - SpriteKit Game and SceneKit Game
New Organization Identifier field
The Android package name and iOS bundle identifier are now generated from the organization identifier which is shared across all wizards and saved every time. This allows projects to be created with an always valid identifier.
Integrating Insights into a Xamarin app is currently a manual process. Developers must manually add the Insights NuGet package to their app project, create an app ID on the Insights website, and copy the app’s API key from the website into initialization calls in their app’s source code. Then, in order to get stack traces for errors, they must manually upload debug symbols to the Insights website for each binary build of their app that that they release to users
This Xamarin Studio release includes integrated support for Xamarin Insights. This integration aims to fix these problems by making it trivially easy to add Insights support to new and existing apps, and to upload debug symbols.
Insights support can be enabled when creating a project by just checking a checkbox in the project creation wizard. For existing projects, Insights support can be enabled in the project options. Xamarin Studio will automatically register new applications in Insights, and will generate and configure the app with the new API key.
When an application is archived in Xamarin Studio, if the app project has Insights enabled, the API key will be embedded into the archive manifest. The archive details panel in the archive list view shows a field with a timestamp of when debug symbols were last uploaded to Insights (or not).
When publishing an archive, if the archive has an Insights key, the debug symbols of the app will also be published.
- The final page of the New Project dialog now has a Xamarin Test Cloud check box for those projects that support Test Cloud. This check box can be used to enable or disable the creation of the UITest project when creating a new solution or project.
- The UITest project templates have been updated to use Xamarin.UITest 1.0.
- Fixed: Run in Test Cloud failing when iOS project has different the build version (CFBundleVersion) and application version (CFBundleShortVersionString) are different.
- Xamarin Studio can now pass Xamarin.Mac applications to the Profiler to be profiled using Run -> Start Profiling or right clicking on a solution/project and using Start Profiling Item.
- The profiler version and location is now shown in the About dialog.
- The search bar can now be focused when the search hotkey (ctrl+, cmd+.) is invoked in a detached editor tab.
- Fixed the toolbar not being draggable close to the debug bar.
- Fixed issues with the statusbar tooltips where it would stay on screen or have misaligned text.
Xamarin Studio now provides a built-in way to set and invoke the same MSBuild "RunCodeAnalysis" target and property that are commonly used by code analysis tools in Visual Studio.
Two new commands have been added: “Run Code Analysis on project” and “Run Code Analysis on solution”. Invoking those commands sets the “RunCodeAnalysis” MSBuild property and executes “Build” target, it’s job of “RunCodeAnalysis” target to depend on “Build” target to be executed.
With this first release of the feature, users must provide their own "RunCodeAnalysis" targets to analyze project code or settings.
Those commands are intended to be used by future releases of Xamarin.Android, Xamarin.iOS and Xamarin.Mac to do analysis of project settings and show warnings and errors about misconfigurations of projects.
A new section in the project settings has been added where this functionality can be enabled on every build.
New Git backend based on libgit2
Switched Git provider from NGit to LibGit2. This fixes a whole suite of bugs that were affecting repositories under Git. Main highlights are: performance increase in all commands, fixed issues with loss of data, corrected behaviour of git update and stash, improved usage of the git index and sane file staging, improved status update of actions.
- Invalid passwords are no longer remembered.
- Fixed a bug where some old .svn repository was found when a .git repository was closer to the Solution file, or vice-versa.
- Added a button to Fetch remotes in the Manage Branches and Remotes dialog.
- Commit comments can now be copied to clipboard.
- Binary detection of files should now match the underlying system’s binary detection, then tries a mime-type check.
- Performance and memory consumption optimizations.
- TFS via Git is now supported.
- Known issue: Blame doesn’t take into account local changes to the file
- Improved StackTrace pad to give user option to show/hide columns, parameter type, parameter name, parameter value, module and line number.
- Added support for visualizing objects of type System.IO.MemoryStream and NSData.
- Improved display of multiline strings in call stack pad.
- Added "User code only" support for catchpoints.
- Fixed: locals not shown if the window is not currently focused when a breakpoint is hit.
- Fixed: Calling functions in the watch window results in autocomplete appending the first entry.
- Fixed: If debugee crashed during evaluating value in ImmediatePad, it kept printing dots for "Evaluating..."
- Fixed: NUnit view resets to Solution view after debugging test.
- Fixed annoying flicker in debugger tooltip.
- Fixed deselection of multiple lines selection on right-click so user can Copy multiple values from DebuggerTreeView.
- Fixed: Inline editor does not fetch whole string.
- Fixed: Watch window: three clicks required to add a new watch.
- Fixed: Select All command when editing watch selects the whole watches list.
- Fixed: Variables in Locals and Watch window collapse every time you step through code.
- Fixed: Debugger locks pdb file after aborting on Windows
- Fixed: Exception popup can't be closed.
- Fixed: Windows debugger ignores non-zero based arrays.
- Fixed: Debugger type proxies don't work for F#.
- Fixed: Incorrect resolving of virtual property in watch view.
- Fixed: Cannot evaluate decimal in immediate window.
- Fixed: Enabling the Android linker causes breakpoints set on newly added lines of code in PCLs to be ignored by Xamarin Studio until they are re-set.
- Fixed: Invalid cast of nint type in immediate window.
- Fixed issues when trying to Debug on a 64 bit Android device.
- Fixed: IntPtr display issue when debugging 64bits applications
- Fixed: User is not able to see Hex value in value visualizer window.
- Readme.txt will be opened when installing NuGet package if it exists.
- Preserve Local Copy setting for references when updating packages.
- Support packages.Config files named after the project (e.g. packages.ProjectName.config).
- Do not show warning in the status bar if NuGet package have PowerShell scripts.
- Do not show Checking for package updates message in status bar (not in the first alpha release).
- Update to NuGet 2.8.7 (not in the first alpha release).
- Prevent packages.config file being marked as deleted by Git after updating the Xamarin.Forms NuGet package.
- Prevent the solution being closed whilst NuGet packages are being added and the solution is not fully created.
- Fixed: Removing a NuGet package does not update the list of packages when multiple solutions are open.
Source Code Editing
- Improved visual style of code generation popup.
- Add an action to delete from the caret to the start of the line.
- Fixed: Context menu does not appear at correct position by using ALT+SHIFT+F10 shortcut keys.
- Fixed: Editor is slow when displaying very long lines.
- Fixed: Formatting doesn't trigger on save for xaml or xml files.
- Fixed: "Toggle Line Comment(s)" in XML Editor affects selected lines plus one more line.
- Do not clear the test results when changing the currently selected project configuration.
- Fixed: Test result info not cleared from bottom toolbar in Test Results pad after closing solution
- Run command is now disabled in the Test pad context menu when a test is running.
Other bug fixes and improvements
- Use of WCF classes is now allowed for Indie and Starter licenses.
- The Windows taskbar icon no longer needs repinning.
- The Windows taskbar icon now supports Recent Files/Solutions.
- Removed files will no longer appear in Recent Files/Projects.
- The properties pad now shows the tooltip when hovering anywhere on the row, not just the row’s first item.
- Windows version is now properly reported for Operating Systems newer than Windows 8.1.
- Fixed error initializing task FixedCreateCSharpManifestResourceName when updating Xamarin.Forms NuGet package.
- MSBuild diagnostic log displayed after log verbosity changed from diagnostic back to quiet on Windows.
- Prevent the reference to unknown project ignored message being displayed when creating new Xamarin.Forms project if Xamarin.Android is not installed.
- Add View menu now working with ASP.NET MVC projects.
- Some UITest templates contain references to old NuGets.
- Mac updater may fail when used in a non-english locale.
- AOT Checkmark in Android settings is not correctly marked as “experimental”.
- [Mac] NSLocation.* in Info.plist does not have readable names.
- [iOS] iPad Pro is not yet supported.
- [iOS] The UI for "Perform all 32-bit float operations as 64-bit float" does not actually enable the option. Workaround: manually provide the option `--aot-options=-O=float32` in the "Additional mtouch arguments" of the project's options (iOS build).
- System.Reflection.TargetInvocationException error is displayed when adding any other application .mdpolicy file.
- Bogus libraries in /usr/local/lib may sometimes cause XS crashes.
- The Task Pad cannot be sorted by the "completed" checkbox column.