Autofac.Mef and WinRT - windows-phone-8.1

I'm having troubles while trying to add the Metadata of Autofac. I have to install the package "Autofac Extras: Metadata Attribute Support" which need Autofac.Mef. When installing this package, I get a message saying that I try to install Autofac.Mef 4.0.0 in a project targeting «portable-net45+win+wpa81» and that the package doesn't contain any file supporting this. (Same message with Autofac.Mef 3.0.3).
I could probably find a way to make my project work without Autofac's Metadata but I don't understand why this package isn't compatible with Windows Phone 8.1. Is there a solution to this issue?
Thanks in advance
Thomas

If you download the Autofac.Mef package manually and then open it up in NuGet Package Explorer you'll see that the Autofac.Mef package only targets .NET 4.5 apps - you can't use it in Windows Phone.
The reason for this is that the original framework MEF is only compatible with the full .NET framework. There's a "lighter weight" MEF 2 framework that is compatible with Windows Phone 8.1 but that's not the one Autofac.Mef works with.
There's no way to fix it. There's also no current plan to switch Autofac.Mef to using the Microsoft.Composition package.

Related

NU1202: MySql.Data.Entity isn't compatible with monoandroid81

I am trying to start my first Xamarin project and I got some issue while trying to install the MySqlEntity NuGet package.
Severity Code Description Project File Line Suppression State
Error NU1202 Package MySql.Data.Entity 6.10.8 is not compatible with monoandroid81 (MonoAndroid,Version=v8.1). Package MySql.Data.Entity 6.10.8 supports: net452 (.NETFramework,Version=v4.5.2) Refo_T3.Android C:\Users\evyat\source\repos\Refo_T3\Refo_T3\Refo_T3.Android\Refo_T3.Android.csproj 1
I tried this solution: Xamarin.Android: Package XX is not compatible with monoandroid81 (MonoAndroid,Version=v8.1)
and I still end up with errors.
It's my first application on Xamarin platform, I used to code in .NET but I decided to test my luck with Xamarin.
I couldn't find any more useful information online and I need your better experience.
Thank You :)
As written on the nuget packages page, the package is only available for .net framework >= 4.5.2
So you can't install it for Xamarin Android project only classic desktop .Net Framework applications.

Compile Windows DLL for WP8

I've got the c# source for a DLL that works on windows 8... I would like to use it in a windows phone 8 application. Is there an easy way to change the target platform of the project to WP8 and then compile for that? I assume it will have to be compiled as a Windows Phone Class Library but that should be fine. I'm using VS2013.
Well it depends on the library. If it has any dependencies to the full .net framework, it will most likely not work. If its just a generic Library, you should be able to make a new Windows Phone Class Library Project and copy over the source.
I guess, you'd simply have to try that. Maybe you can bypass some of the dependencies and rewrite these sections with Windows Phone compatible code.

Cant use NuGet to add Unity IoC to a portable class library

I am making a Windows Phone 8 application, however because I would like at some point to also publish this application for Windows 8.1 store I made the effort to factor out the application logic into a portable class library. All good so far.
Now being a good boy I want to use an IoC container, unity by preference (since I am familiar with it in desktop and Win Phone 8 only apps)
So here's my problem; the NuGet Unity package will not install into my portable application with this result:
Installing 'Unity 3.0.1304.1'.
Successfully installed 'Unity 3.0.1304.1'.
Adding 'Unity 3.0.1304.1' to Logic.
Uninstalling 'Unity 3.0.1304.1'.
Successfully uninstalled 'Unity 3.0.1304.1'.
Install failed. Rolling back...
Could not install package 'Unity 3.0.1304.1'. You are trying to install this package into a
project that targets 'portable-net45+wp80+win', but the package does not contain any assembly
references or content files that are compatible with that framework. For more information,
contact the package author.
So is there a unity that works with a PCL? or is this just a shortcoming of the NuGet package?
I failed to find any useful documentation on the P&P website to indicate what platforms it is compatible with, but I know it does support WP8 at the least since the NuGet package is quite happy with libraries targeting just that.
Any guidance from the community would be very welcome here I don't want to abandon using a PCL for my app logic if I can avoid it, but if it comes down to a toss up between that and NuGet for package management I will in order to keep the NuGet goodness.
Could this be related to NuGet and Portable Class Libraries - Package doesn't target any framework? that seems more related to making your own NuGet packages for use in your own PCLs.
Unity 3.0.1304.1 does not contain any PCL assemblies so you will not be able to install it into a PCL project using NuGet.
The Unity NuGet package contains assemblies that target the following frameworks:
.NETFramework 4.5
.NETCore 4.5 (Windows Store/WinRT)
Windows Phone 8
You can see these target frameworks if you open the NuGet package into NuGet Package Explorer or download the NuGet package and open it using a program that supports zip files such as 7zip or Windows built-in zip file support.
So your possible options are:
Just use Unity in your main Windows Phone 8 application.
Write your own IOC container.
Use an IOC container that supports PCL projects such as Portable.CommonServiceLocator.
Compile your own PCL version of Unity.
Use a later version of Unity 3.5 since this includes a PCL assembly targeting portable-net45+wp80+win8+MonoAndroid10+MonoTouch10
Updated: 2014-05-11
Unity 3.5 now includes a PCL assembly that targets portable-net45+wp80+win8+MonoAndroid10+MonoTouch10 which will install into a project that targets portable-net45+wp80+win.
There is no Unity for PCL, but you can use Ninject for example.

Windows Phone 8 JSON

I am starting the development on windows phone 8, the famous JSON.NET does not support windows phone 8 yet, is there any other library which can be used for this purpose?
The JSON.NET codeplex site says that WP8 is supported.
Update: The JSON.NET NuGet package should just work with a Windows Phone 8.0 project. Adding it in VS2012 NuGet manager pulls in the WP7 version of JSON.NET. (packages\Newtonsoft.Json.4.5.10\lib\sl3-wp\Newtonsoft.Json.dll)
JSON.NET is now also available as a Portable Class Library which you can consume from WP8 (available in NuGet or in source form).
Had the exact same problem - turns out I didn't have the newest version of NuGet.
To upgrade, click tools -> extensions and updates and then click the Updates-tab. Update everything, restart the program and try again. :-)
I was having this issue. I was able to compile the source for Windows Phone 8 instead of Windows 7.1 and it worked. NuGet would not work for me.
Here is how I did it:
Open up solution JsonXXrXX.zip\Source\Src\Newtonsoft.JSON.WindowsPhone.sln
Go to properties for Newtonsoft.Json.WindowsPhone Project(Right click on the project then properties)
For the dropdown of "Target Windows Phone OS Version" select Windows 8.X
Compile.
Grab the DLL, PDB, and XML from the output directory
Add Reference to the DLL file in your Windows Phone 8 Project
Thats it. I can't vouch that it works 100% or that you'll be able to submit your app. But it should hold you over until there is official support.
For complex json you might find this website helpful: http://json2csharp.com/#.
If you don't wanna make too fancy stuff (or need dictionary) suppport, you can also just use the built-in DataContractJsonSerializer (http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx)
Btw: At least in https://json.codeplex.com/discussions/401305 some people report that the WP7.1 dll works for them, using this file: "Newtonsoft.Json.4.5.7\lib\sl4-windowsphone71\Newtonsoft.Json.dll".

Does protobuf-net support Windows RT?

Is it possible to use the protobuf-net library in an application that targets Windows RT? I tried adding it via NuGet to my project but I receive this error:
Successfully installed 'protobuf-net 2.0.0.480'.
Successfully uninstalled 'protobuf-net 2.0.0.480'.
Install failed. Rolling back...
Could not install package 'protobuf-net 2.0.0.480'. You are trying to install this package into a project that targets '.NETCore,Version=v4.5', but the package does not contain any assembly references that are compatible with that framework. For more information, contact the package author.
You need a newer version. Version 594 has support for 4.5.
In the package manager console (Tools->Library Package Manager->Package Manager Console) run:
PM> Install-Package protobuf-net -Version 2.0.0.594
Or download it from the project web site.
Yes, the more recent builds have full support for .NETCore (aka "WinRT", "Windows Store Applications", or "Metro", or "Modern UI", or whatever they want to call it today). As Eli notes, you can obtain it by specific version, or you can get it from the google-code download.
Note that for the best performance it is recommended to use "precompile", the new precompiler, because .NETCore has no support for meta-programming: without this, it will be using reflection at runtime, and will not be anywhere near as fast as it can be. This is included in the google-code download.