Удаление префикса пространства имен “asmv2” атрибута вызывает исключение system.nullreferenceexception
Всем Привет,
У меня есть проблема при удалении пространства имен prfix "asmv2". Это вызывает исключение нулевой ссылки.
Пожалуйста смотрите ниже фрагмент кода:
<pre>/// <summary> /// Remove lines from the manifest that contain filenames that do not /// exist in the addin bin folder /// </summary> /// <param name="manifest">Manifest file to edit</param> private static void SanitizeManifestToMatchBin(string manifest, string addInBinFolder) { // load manifest XDocument xDoc = XDocument.Load(manifest); xDoc.Root.Attribute(XNamespace.Xmlns + "asmv2").Remove(); XNamespace ns = "urn:schemas-microsoft-com:asm.v2"; // remove any files from dependentAssembly/codebase that do not exist in the bin folder xDoc.Descendants(ns + "dependentAssembly") .Where(x => (string)x.Attribute("dependencyType") == "install" && File.Exists(addInBinFolder + "\\" + (string)x.Attribute("codebase").Value) == false) .Select(x => x.Parent) .Remove(); //xDoc.Descendants(ns + "file") // .Where(x => File.Exists(addInBinFolder + "\\" + (string)x.Attribute("name").Value) == false) // .Select(x => x) // .Remove(); //xDoc.Descendants(ns + "file").Remove(); xDoc.Save(manifest); }
На приведенном выше фрагменте кода,
xDoc.Root.Attribute(XNamespace.Xmlns + "asmv2").Remove(); //is throwing null reference exception.
Ниже приведен мой xml-манифест:
<pre><asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
Что я уже пробовал:
В приведенном выше xml-манифесте я обнаружил, что "asmv2" недоступен, и я пытаюсь удалить эту запись.Я попытался проверить, почему этой записи там нет, но безуспешно.
Пожалуйста, помогите мне решить эту проблему.
Спасибо.
Richard MacCutchan
Вы не можете удалить то, чего не существует.
Member 13187373
Почему этот атрибут asmv2 отсутствует в файле xml-манифеста при создании файла xml-манифеста? Может быть, это зависит от установки какого-то пакета на машину?
Richard MacCutchan
Я понятия не имею, но содержание манифеста зависит от структуры вашего приложения и от того, какие функции оно использует. Вы не должны делать предположений о том, что он содержит.