views:

131

answers:

1

Apparently XamlWriter doesn't works correctly in a WinForms application.

XamlWriter uses MarkupWriter.GetMarkupObjectFor(object obj). I suppose that there's a problem to determine the full list of properties to serialize.

var ar = new AssemblyReference(AppDomain.CurrentDomain.GetAssemblies().First()); var str = XamlWriter.Save(ar);

Running an ASP.NET or WPF application I got this result:

<AssemblyReference AssemblyName="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
HintPath="file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll" 
SpecificVersion="False" xmlns="clr-namespace:Ivolutia.TypeModel;assembly=ivoTypeModel" />

But running the same code in a WinForms application I got this:

<AssemblyReference xmlns="clr-namespace:Ivolutia.TypeModel;assembly=ivoTypeModel" />

this is the class definition:

public class AssemblyReference : DependencyObject
{
    public string AssemblyName { get; set; }
    public string HintPath { get; set; }
    public bool SpecificVersion { get; set; }

    public AssemblyReference() { }

    public AssemblyReference(Assembly assembly)
     {
      AssemblyName = assembly.FullName;
      HintPath = assembly.CodeBase;
     }

     public override string ToString()
     {
      return AssemblyName;
     }
}
A: 

Are you sure? I just created a temp WinForms project and it's outputting:

<AssemblyReference AssemblyName="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" HintPath="file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll" SpecificVersion="False" xmlns="clr-namespace:XamlWriterTester;assembly=XamlWriterTester" />

Edit: As an aside, is there a reason why plain XML serialization doesn't work for you?

micahtan