Click here to Skip to main content
13,699,721 members
Click here to Skip to main content
Add your own
alternative version

Tagged as

Stats

3.1K views
1 bookmarked
Posted 3 Apr 2017
Licenced CPOL

Fire Somebody, Anybody - Or Go Home ...

, 3 Apr 2017
Rate this:
Please Sign up or sign in to vote.
VS 20017 + Xamarin: can't reference a new Portable Library straight out of the box - another failure of a very basic function

VS 20017 + Xamarin: can't reference a new Portable Library straight out of the box ...

Aside from all the other issues documented elsewhere in their (Xamarin) forum, here's another failure of a very basic function.

I have installed VS 2017 Community on my Windows 10 laptop. I have created a brand new sample Xamarin.Forms portable class application. I've removed the iOS & Windows UWP projects because I don't have a Mac, and I don't want to go through the tedious BS required to make the UWP project work the way that it should straight out of the box. Besides, they're not germane to my issue. Here's the stripped down project structure.

This actually builds, and deploys in a relatively quick time to my selected emulator:

Thank goodness for small successes. They don't last long, however.

Like any good developer, I want to create a library that I can use in my demo project. Let's say I want a class that contains all the constants I'll be using. I create a new, portable class library.

Here's the default class it creates in the new library:

Why it started with a page, I don't know, but hey - it does compile successfully. So, let's add a reference to this new library in my main project.

Uh, Oh!

Ok - let's just make the targets sync up. That'll solve it.

Let's open up the properties dialogs for each project and put them side-by-side:

So the main project seems to be targeting Windows Phone Silverlight 8, while the brand new class library is not. But there's a "Change" button there. Since I don't really care much about Silverlight, let's remove it from the target list of the main project.

As you can see, it doesn't exist. So how on earth do I get rid of it?

How about adding it to the library project instead?

Oh no! Still not there. But look! There's that link to install additional targets. Let's try that.

Unfortunately, this takes you to a page on the internet (https://www.microsoft.com/net/targeting) which is just as useless and nowhere has anything about Silverlight, Windows Phone 8, etc.

It looks like I'm stuck. Maybe I need to update my packages through NuGet, since that was the solution for a problem with the UWP project documented elsewhere.

Here's the package documentation:

A total of 9 packages in the entire solution, and 8 of them need to be updated. Let's try that. Let's live dangerously and select them all:

That actually worked! Of course, the only reason it worked is because I had gone into the Android SDK Manager (Tools/Android/Android SDK Manager), and added the Android 7 SDK. Doing all those updates only took about an hour.

Also, it added one more package to update (the Android.Build.Download) which I updated, and then had to restart VS 2017.

Rebuild again, and everything still seems to compile. However, I still can't reference my new class library from my main project. My package update, however, provided a clue. Here's what I saw (I've removed lines that are irrelevant):

Attempting to gather dependency information for multiple packages with respect to project 'DemoXamarinFail', targeting '.NETPortable,Version=v4.5,Profile=Profile259'
Attempting to gather dependency information for multiple packages with respect to project 'ClassLibrary1', targeting '.NETPortable,Version=v4.5,Profile=Profile111'

Sigh - For those of you who have remained thus far, there is a terrible, awful, lousy solution for this.

First, right-click and unload the library project:

Then, right-click and edit the project:

Find the "offending" line:

<targetframeworkprofile>Profile111

And change 111 to 259. Save the file. Exit the file. Right-click and reload the project.

Now, you can add the reference. The solution still builds, and it will run on the emulator.

This is terrible. Someone, as they say, needs to be fired. Here's why.

I'm an MS fanboy. I've been coding for and on Windows since the early 90s. That's a long time, even in human years, let alone dog-years. The ONLY reason I've stuck with this particular problem I'm documenting is because I'm so committed to using Microsoft products.

But let's suppose I'm actually a youngish Project Manager, or middle-ish Engineering Director who wants to get the company into Mobile development. So I order someone to volunteer to explore this technology. Hey, you, wet-behind-the-ears-mobile-noobie. See what Microsoft has and what this Xamarin stuff is all about. He comes back in two days and says, I couldn't get it to work straight out of the box. The app that they create as a default wouldn't compile properly, and wouldn't run on the emulator.

Boom! Next! Microsoft just lost that customer/company forever.

People use Microsoft products because they are easier to use, or have more features, and more importantly, BECAUSE THEY WORK! STRAIGHT OUT OF THE BOX, THEY WORK!

Microsoft will NEVER get new Mobile platform developers if they try and push this crap out to the development community. Fire the product manager, or fire the lead developer, or fire the QA team that let this out the door, or fire the whole lot of them.

But get this stuff straight, or just give up on Mobile.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

GrumpyPants
Architect SACC
United States United States
A seasoned IT professional with experience designing and developing enterprise class information systems. Experienced in business process and workflow analysis, Object Oriented Design, Object Oriented Development, and Application/Solution Architecture. A Technical Manager of small and large teams, mentor, and experienced in both Waterfall and Agile methodologies. I have instigated and worked with other dev teams to improve processes at my employers including TDD, Continuous Integration, refactoring, improved logging, and Aspect Oriented Programming, resulting in reduced TCO, improved testing, and improved software quality.

You may also be interested in...

Comments and Discussions

 
QuestionPossible cause of your issue Pin
htm115-Apr-17 7:38
memberhtm115-Apr-17 7:38 
AnswerRe: Possible cause of your issue Pin
GrumpyPants5-Apr-17 10:21
memberGrumpyPants5-Apr-17 10:21 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Cookies | Terms of Use | Mobile
Web01-2016 | 2.8.180910.1 | Last Updated 4 Apr 2017
Article Copyright 2017 by GrumpyPants
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid