Wix и XmlSerialization: символ двоеточия шифруется на x003A

1

Потратив некоторое время на то, как решить эту проблему, нашел решение и решил опубликовать этот уважаемый форум, получив заслуженный кредит.

Проблема: сериализация XmlElementAttribute ниже создала следующий контент в файле WXS, а затем:

[XmlElementAttribute("bal:WixStandardBootstrapperApplication")]
public WixStandardBootstrapperApplication WixStandardBootstrapperApplication
{ get; set; }

<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
   <bal_x003A_WixStandardBootstrapperApplication LicenseUrl="" SupressOptionsUI="yes" />
</ BootstrapperApplicationRef >
Теги:
namespaces
wix

1 ответ

1

Решение найдено по адресу: http://forums.asp.net/post/3149628.aspx. Как это:

Код сериализации:

TextWriter tw = new StreamWriter (wxsBundleFileName) ;
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(wx.GetType());

XmlSerializerNamespaces XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", " http://schemas.microsoft.com/wix/2006/wi");
ns.Add("bal", "http://schemas.microsoft.com/wix/BalExtension") ;

xs.Serialize(tw, wx, ns);

Правильный код - это класс сериализации:

[XmlElementAttribute(ElementName = "WixStandardBootstrapperApplication", Namespace = "http://schemas.microsoft.com/wix/BalExtension")]
public WixStandardBootstrapperApplication WixStandardBootstrapperApplication
{ get; set; }

Готов!

<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
   <bal:WixStandardBootstrapperApplication LicenseUrl="" SupressOptionsUI="yes" />
</BootstrapperApplicationRef>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню