Очевидно, что XamlWriter не работает правильно в приложении WinForms.
XamlWriter использует MarkupWriter.GetMarkupObjectFor (object obj). Я полагаю, что существует проблема с определением полного списка свойств для сериализации.
var ar = new AssemblyReference (AppDomain.CurrentDomain.GetAssemblies (). First ());
var str = XamlWriter.Save (ar);
Запустив приложение ASP.NET или WPF, я получил такой результат:
<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" />
Но, запустив тот же код в приложении WinForms, я получил это:
<AssemblyReference xmlns="clr-namespace:Ivolutia.TypeModel;assembly=ivoTypeModel" />
это определение класса:
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;
}
}