Я преобразовываю свои настраиваемые действия InstallScript в управляемые настраиваемые действия, используя пространство имен DTF (Microsoft Deployment Foundation). Есть фрагмент кода InstallScript, который мне не удается преобразовать в C#, где мне нужно выполнить некоторые манипуляции с XML-файлом. Исходный код InstallScript приведен ниже. Мой код ниже - это то, как я его преобразовал до сих пор. Есть ли лучший способ его преобразования, чтобы я мог воспользоваться точечной нотацией (Intellisense) вместо поздней привязки объекта XML-документа.
set oDoc = CoCreateObject("Microsoft.XMLDOM");
if (IsObject(oDoc)) then
oDoc.async = FALSE;
oDoc.validateOnParse = FALSE;
oDoc.resolveExternals = FALSE;
oDoc.preserveWhiteSpace = VARIANT_TRUE;
oDoc.load(szCryptomaticConfigFile);
szXPath = CRYPTOMATIC_SETTINGS_PATH;
set oSettingsNode = oDoc.selectSingleNode(szXPath);
szValue = CRYPTOMATIC_SETTINGS_VALUE;
oSettingsNode.nodeTypedValue = szValue;
oDoc.Save(szCryptomaticConfigFile);
endif;
Моя конверсия
dynamic oXMLDOMDoc = Activator.CreateInstance(Type.GetTypeFromProgID("Microsoft.XMLDOM"));
if (oXMLDOMDoc != null)
{
oXMLDOMDoc.async = false;
oXMLDOMDoc.validateOnParse = false;
oXMLDOMDoc.preserveWhiteSpace = VARIANT_TRUE;
oXMLDOMDoc.load(szCryptomaticConfigFile);
string szXPath = CRYPTOMATIC_SETTINGS_PATH;
dynamic oSettingsNode = oXMLDOMDoc.selectSingleNode(szXPath);
string szXValue = CRYPTOMATIC_SETTINGS_VALUE;
oSettingsNode.nodeTypedValue = szXValue;
oXMLDOMDoc.Save(szCryptomaticConfigFile);
return ActionResult.Success;
}
else
{
return ActionResult.Failure;
}
XmlSerializer
. Иногда вам нужно применить атрибуты к вашим классам, чтобы получить именно тот XML, который вам нужен, но это довольно эффективно. - person James Thorpe   schedule 24.02.2015XmlDocument
в соответствии с ответами здесь гораздо уместнее. - person James Thorpe   schedule 24.02.2015