How to migrate/update to newer version of Xamarin.Forms? - xamarin

I have some xamarin.forms 1.xx( I dont know which version) project on multiple platforms Android and iOS. And I've been asked to upgrade it to the maximum available right now version of xamarin.forms.
Therefore, I have 2 questions:
1) How to determine which version of forms I'm using right now (I'm working in Windows environment using Visual Studio 2015 ).
2) How to migrate/update to newest version of forms? (step by step, if it's possible). I have no idea how the result of that kind of operation supposed to look like, cuz I have never done anything like this before in my life. And what the best practices are?
What I've done is opened VS2015->Help->Xamarin release notes, however there was nothing about version of Forms I'm using. Also, I went to the official xamarin website and there was no guide how to do that. I also tried to look at the release notes the last Forms update and trying to find and fix differences, but my project is so big and I thought that this way doesn't seems right.

I'll answer first the What are the best practice regarding upgrading a Xamarin.Forms application? first and then address your other concerns.
I recently upgraded from 1.5.1 to 2.3.2, and from my experience, this is the steps to go through:
Decide which version you will upgrade from and to.
Read the change logs for all stabled releases between these two versions and look for breaking changes/bugfixes. You can find the release notes on Xamarin's website or on NuGet's website too.
Check regularly for new releases on the Xamarin.Forms forum and check if any reported issues may affect you. Every time Xamarin makes a release, there is a thread full of comments from other developers that may have encountered issues you might be interested in.
Using your favorite versioning software, make sure that all local changes are commited or stashed and create a new branch for your Xamarin.Forms upgrade (you don't know how long the upgrade will take and you still want to be able to send patches during the process)
Upgrade: Read the Important notes at Xamarin.Forms 2.3.2 release notes, especially the When upgrading Xamarin.Forms take care not to simply "update all" as ... part. Remember to upgrade on your PCL project, on your iOS project and on your Android project.
Test your whole app on as many devices as possible and for the longest possible period before you merge your branch back into your development/master/Main branch and address the potential incompatibility issues that may have been created in your development/master/Main simultaneously.
Step 3 is very important as it will allow you to reset back to your starting point and restart if you should fail to upgrade for whatever reason.
Xamarin.Forms is moving fast so it's important that you always keep an eye on what's going on even if you don't upgrade.
Which version am I using right now?
You can check that in the NuGet package interface or in the packages.json file in your project.

Related

ITMS-90909: Deprecated API Usage with iOS in Xamarin Forms app

Can anyone suggest what to do about this message that I get when submitting my Xamarin Forms app to the iOS store?
Comment on possible duplicates
This question was asked before and not answered; I don't think an answered duplicate exists.
This is a known issue which was recently closed by the Xamarin team issue can be found here https://github.com/xamarin/Xamarin.Forms/issues/7323
And the fix is and i qoute
All the bits are in place, solution time! TL;DR: all is described in this piece of documentation here.
Make sure you are using the latest Visual Studio (for Mac) on the stable channel, that should put you on the right path. At the moment, you will need to use the Xamarin.Forms 4.5-pre1 preview release. I understand that this might not be an option for all of you, but rest assured, the stable package will be out well before the deadline. Stable 4.5 is planned mid to end of February.
Lastly, put the --optimize=experimental-xforms-product-type flag into your iOS additional mtouch arguments setting and you should get rid of the deprecation warning by Apple. If you don't have any references of your own to UIWebView of course 🙂
I would like to ask you to try this at your earliest convenience. Maybe not to release an actual new version to the store based on the Forms preview package, but at least upload a build to verify that this solution works correctly. Whenever you do, you can just update to the 4.5 stable package and release a new version with confidence.
If you do run into anything with this solution, please feel free to reach out to me directly (gerald.versluis [a with a long tail] microsoft.com) or open a new issue on the repository. Of course positive feedback is always appreciated as well 😉

UnityContainerExtensions.cs not found

After updating some NuGet packages, it turned out that some things in my website got broken by new code. I updated to the new Unity inversion control 5.0.0, etc. So after a while of hunting around and trying to fix it, I was able to get it to finally build and launch the site. However, the Unity IOC was broken because I kepts getting the "Error in Application '~/', controller must have a parameterless constructor". I saw that my couple of Unity files (UnityConfig.cs and UnityMvcActivator.cs) were gone, so I replaced them with ones I had in the backup folder.
Well, now it launches a loading site, but in VS it now says "UnityContainerExtensions.cs not found". I see that it looks all over for this file, around 'C:\ Program Files (x86)\Microsoft Visual Studio 14.0\VC...' and then it goes looking through 'c:\projects\unity]Abstractions\src\Utility...' - a folder that I can't even see.
This is in VS2015, doing a web application with Framework 4.6.
What can I do to just make it work again, as when I first had it so many months ago?
Alright, I was able to fix my Unity problem by rolling back on some of the packages. I'm the kind of person who likes to have no notifications, so I clicked Update All, and apparently the updates weren't necessarily compatible with my project here. To get it working again I has to bring back:
Unity.Abstractions = 2.0.0
Unity = 4.0.1
Unity.AspNet.WebApi = 4.0.1
Unity.Mvc = 4.0.1
Now to great relief, all works just as it did before!
However, I do wish I knew why the breakages happen and also why these packages are listed as updates when they are not going to work with my project.
Till the future, my system is going to have to consist of a Post-It "Do not update these xxxx packages, they will break stuff". And I wish to gain an understanding of what is the reason behind such Unity mess.

How to handle different versions of source code?

Initially we didn’t use any source control software. Now we are using TFS 2010 for version control. Currently we are facing issue related to how to handle changes with production code and code that is under development.
Assuming we have published a version 1.0 to the web using visual studio 2010 publish with source code x. Now we continue to work on the source code to implement more features. Noow the source code has changed to x.something.
During that time we receive bugs reported by users. Now how to handle such situations since bugs has to be fixed in source code version x. And we don’t want to use x.something version since it has few unfinished features which we don’t want to publish on production.
At this time what is the recommended practice.
Are there two repositories for different versions of source code? If yes then how to fix errors when then come –first update current version or the published code, since we don’t want those errors to exist in current development version.
look into Branching - you can find a good guid here:
TFS Branching Guidance
I think you need/want something like the Branch per Release of Code-Promotion Branches described [here]: or
2
I like those too, but they are more comples (too complex?):
(taken from here - only in german sorry)
You should put a label on your code when releasing in prod, and then making a branch immediatly.
TFS2010 doesn't support "branching by label" though the UI anymore. See "Branching by Label in TFS 2010".
If you didn't make a branch dedicated for fixing the bugs in prod right away, you still can use the command line for branching by label. See "Branch commands"
Create a branch for your released version (x) if you haven't already. Fix the bugs in the release branch. Merge the fixes into the development branch (if applicable). http://tfsbranchingguideiii.codeplex.com/ has recommendations on branching and merging.

New iOS project, free hosted repository: Xcode 4 or Xcode 3.2?

I wonder whether I should start development of a new iOS project in Xcode 4 or 3.2 - on one hand, I know 3.2 (a little), there is lots of info about it out there, and it's stable and proven. On the other hand, Xcode 4 brings some improvements as well. Are the newer previews of Xcode 4 ready for prime time, or are they still too buggy?
I'm especially interested in issues with (and recommendations of) externally hosted repositories, as I was not very happy with how Xcode 3.2 played with the Subversion repository in my last project.
Which one to choose, and which (preferably free and externally hosted) repository to match?
Today (3rd Feb 2011) Apple released the GM-Seed of xcode4. It's now ready for usage and you can compile your apps and release to the app-store. So if you are new with xcode, I would suggest using xcode4.
Why?
The new compiler has a lot of optimizations done. The compiler (as far as I can see the results) generates faster code. It's big fun!
The new Userinterface is more reliable. It makes your development a lot faster!
2a. Interface builder is now integrated. You can "drag and drop" your userinterface Item using the "ctrl"-key into your code and xcode creates the source for you! This accelerates creation of userinterfaces a lot!
git support has been added to sourcecontrol, which makes development in teams easier
The new LLVM compiler shows errors immediately while coding. And it displays errors, which xcode3 never mentioned
In xcode4 Apple changed a lot! So if you start with xcode3, you will have a new learning curve with xcode 4. For newbs I suggest: Download the xcode4 goldmaster and get startet with xcode4!
I second JackPearse's endorsement of Xcode 4, with one caveat. Been using Xcode 4 for a couple of days and am really starting to like it. Particularly like the way it shows the changes in each file as you commit. Unfortunately, when you delete a file, it forgets that it will need to be deleted in the repository as well. But the big BUT right now is that Xcode 4 will immediately crash the moment you try to do any Core Data modeling. See also XCode 4 Data Model Versioning bug? here on Stack Overflow. So, if you plan to use Core Data, you'll need to keep Xcode 3 around as well until they fix this.

CodeIgniter version 2.0 is stable enough to use?

i want to port my application to CodeIgniter but i am wondering whether i should use their v2.0 or v1.72 (then when they release 2.0, upgrade it).
i have never used a framework before so i don't exactly know what implies when upgrading a framework: what does it mean practically - i just move the folders and it will work? or do i have to change a lot of settings, file structure etc? could someone enlighten me about the upgrade process.
and what would you use: v.1.72 or v2.0?
if i'm using the latest version, is there a good documentation for it somewhere so you can read about how to use the new features: packages, drivers and so on.
thanks
You can read about some of the changes in 2.0 here.
I would image the upgrade process should be straightforward as long as you do not use any features that are different/removed such as plugins. Just take your models, controllers, etc and drop them into the 2.0 framework. Then regression test you whole app, fixing any problems as you see them...
If you are selling this app or making something mission critical then of course v1.7.2 is the best choice. That said I have PyroCMS running on v2.0 and since some of my bug-fixes were merged it seems stable enough.
One should consider time frames for deployment:
If it is one week, then stick to v1.7.2
If it is three months, go with v2
Assuming three months is approximately to time for a release to stabilise?

Resources