Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Wix中的新名称空间添加属性和元素,并被Wix忽略?_Wix_Wix3 - Fatal编程技术网

如何从Wix中的新名称空间添加属性和元素,并被Wix忽略?

如何从Wix中的新名称空间添加属性和元素,并被Wix忽略?,wix,wix3,Wix,Wix3,我想在wixwxs文件中添加一个不相关的属性,并希望Wix忽略它 它当前在查找扩展时抛出以下错误 组件元素包含未处理的扩展属性“myns:myattr”。请确保已提供“”命名空间中属性的扩展。 Rob、Bob或wix团队中的任何人都在听!!:) 处理该XML命名空间中的元素的。下面的示例扩展将导致命名空间http://www.example.com将被忽略: 在mywixext.cs中保存以下代码: using System.Xml.Schema; using Microsoft.Tools.W

我想在wixwxs文件中添加一个不相关的属性,并希望Wix忽略它

它当前在查找扩展时抛出以下错误

组件元素包含未处理的扩展属性“myns:myattr”。请确保已提供“”命名空间中属性的扩展。

Rob、Bob或wix团队中的任何人都在听!!:)

处理该XML命名空间中的元素的。下面的示例扩展将导致命名空间
http://www.example.com
将被忽略:

mywixext.cs
中保存以下代码:

using System.Xml.Schema;
using Microsoft.Tools.WindowsInstallerXml;
using System.Xml;

[assembly: AssemblyDefaultWixExtension(
   typeof(mywixext.IgnoreNamespaceWixExtension))]

namespace mywixext
{

   public class IgnoreNamespaceWixExtension : WixExtension
   {
      public override CompilerExtension CompilerExtension
      {
         get
         {
            return new IgnoreNamespaceCompilerExtension();
         }
      }
   }

   public class IgnoreNamespaceCompilerExtension : CompilerExtension
   {
      public override XmlSchema Schema
      {
         get
         {
            return new XmlSchema() 
            {
               TargetNamespace = "http://www.example.com" 
            };
         }
      }

      public override void ParseElement(
         SourceLineNumberCollection sourceLineNumbers,
         XmlElement parentElement, XmlElement element,
         params string[] contextValues)
      {
         // do nothing
      }

   }
}
现在将其编译成如下所示的
mywixext.dll

"c:\WINDOWS\Microsoft.NET\Framework\v3.5\csc.exe" /t:library ^
/r:"c:\program files\windows installer xml v3\bin\wix.dll" ^
mywixext.cs
如果现在使用选项
-ext mywixext.dll
(或在Voctive中执行等效操作)编译wix源代码,则
http://www.example.com
命名空间将被忽略


编辑:当我说任何元素都将被忽略时,我说得不准确。wixxml模式不允许您将自己的子元素直接添加到
WIX
元素下。大多数其他因素都允许这样做。在
c:\program files\windows installer xml v3\doc\wix.xsd
中查找文本
,以找到扩展点。

我已经在
下使用自己的子元素进行了测试。您可能正试图直接在
下添加内容。我已经编辑了我的答案,以澄清为什么不允许这样做。因为我们不能向Wix元素添加属性,但可以向Wix元素添加新元素。