Aus Frust und mehr als 3 Tage googeln dieses Problem ... Ich habe keine andere Wahl, als Sie mit meiner Frage zu belästigen.Silverlight 4, MEF, Export/Importfehler, Mefx will nicht arbeiten
Ich erstelle eine Silverlight-Anwendung. Ich benutze MEF. Wenn ich versuche, meine Anwendung auszuführen, erhalte ich den folgenden Fehler.
The invocation of the constructor on type 'IFG.Silverlight.Client.Views.MenuView' that matches the specified binding constraints threw an exception. [Line: 25 Position: 47]
und seine innere Ausnahme ist wie folgt ...
The composition remains unchanged. The changes were rejected because of the following error(s): The composition produced a single composition error. The root cause is provided below. Review the CompositionException.Errors property for more detailed information.
1) No valid exports were found that match the constraint '((exportDefinition.ContractName == "MenuViewModel") AndAlso (exportDefinition.Metadata.ContainsKey("ExportTypeIdentity") AndAlso "IFG.Silverlight.Client.ViewModel.MenuViewModel".Equals(exportDefinition.Metadata.get_Item("ExportTypeIdentity"))))', invalid exports may have been rejected.
Resulting in: Cannot set import 'IFG.Silverlight.Client.Views.MenuView.ViewModel (ContractName="MenuViewModel")' on part 'IFG.Silverlight.Client.Views.MenuView'. Element: IFG.Silverlight.Client.Views.MenuView.ViewModel (ContractName="MenuViewModel") --> IFG.Silverlight.Client.Views.MenuView
Ok. Mein Code ist sehr einfach, da es eine Testanwendung ist.
Ich habe eine Schnittstelle IRetailModel
namespace IFG.Silverlight.Client.Common
{
public interface IRetailModel
{ ............
dann habe ich eine Klasse, die diese Schnittstelle
namespace IFG.Silverlight.Client.Model
{
[Export(typeof(IRetailModel))]
public class RetailModel : IRetailModel
{ .................
Dann für die Ansicht haben implementiert ich meine Viewmodel
namespace IFG.Silverlight.Client.ViewModel
{
[PartCreationPolicy(CreationPolicy.NonShared)]
[Export(ViewModelTypes.MenuViewModel)]
public class MenuViewModel : IFGViewModelBase
{
IRetailModel _model;
[ImportingConstructor]
public MenuViewModel(IRetailModel model)
{
Nun, ich Ich fand heraus, dass es ein magisches Werkzeug namens MefX gibt, das tief in die Knochen gehen soll, um deinen Code zu entschlüsseln nd erzählt dir, was vor sich geht ... Ich konnte das nicht zur Arbeit bringen.
Ich folgte Richtungen von diesem Artikel http://blogs.msdn.com/b/nblumhardt/archive/2009/09/24/debug-composition-from-within-visual-studio.aspx
Wenn ich versuche, es zu laufen, sagt
Error: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
Dann zurück zu Google ging und ich fand diese Sicht MEFX (was dasselbe ist, aber mit einer GUI) und ich kann die .xap laden, aber im Grunde gibt es mir die gleichen Informationen, die ich von Visual Studio bekomme. Ich kann die verdammte [BECAUSE] nicht finden ...
Ich bin wirklich, ehrlich und tief, frustriert mit dieser Situation. Kann mir jemand erklären, wo ich MefX nicht dazu bringe, seinen Job zu machen? Ich kenne das Risiko, mit diesen Overnight Frameworks (Mangel an Dokumentation, Buggy, etc etc) umzugehen, die MEF zu sein scheint, aber Prism ist für mich keine Option (ich habe das Gefühl, eine M16 zu kaufen, um eine Fliege zu töten, wenn ich meine benutzen kann Finger).
Danke
Nevermind Leute ... ich hatte vergessen, einen Verweis auf meine ViewModel DLL hinzuzufügen ... so einfach wie das ... :( – Tony