Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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/0/xml/12.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
Asp.net 配置文件XDT转换插入正在跳过子项_Asp.net_Xml_Web Config_Nuget_Transformation - Fatal编程技术网

Asp.net 配置文件XDT转换插入正在跳过子项

Asp.net 配置文件XDT转换插入正在跳过子项,asp.net,xml,web-config,nuget,transformation,Asp.net,Xml,Web Config,Nuget,Transformation,我在进行配置转换时遇到问题,无法在nuget package安装中添加应用程序设置,其中元素appSetting可能存在,也可能不存在 我希望发生什么: appSetting元素不存在 插入appSetting元素及其子元素 appSetting元素存在 如果缺少,请插入子项 我只让一个或另一个工作,但不是两个场合 web.config.install.xdt 例1 web.config之前 appSettings元素在转换之前不存在 web.config之后 例2 we

我在进行配置转换时遇到问题,无法在nuget package安装中添加应用程序设置,其中元素
appSetting
可能存在,也可能不存在

我希望发生什么:

  • appSetting
    元素不存在
    • 插入
      appSetting
      元素及其子元素
  • appSetting
    元素存在
    • 如果缺少,请插入子项
我只让一个或另一个工作,但不是两个场合

web.config.install.xdt


例1 web.config之前


appSettings
元素在转换之前不存在

web.config之后


例2 web.config之前


appSettings
element在转换前显示

web.config之后



示例2中没有发生任何事情,因为
appSettings
元素已经存在,我希望它仍然对其子元素求值并插入那些不存在的元素,但它们似乎被忽略了。属性
xdt:Transform
是否还有其他值可以使用,或者是否有其他方法可以解决这个问题?

我很久以前也遇到过类似的问题。我应用的解决方法是在XDT文件中有两个带有
的条目,一个用于检查它是否不存在,如果是,则继续插入它。另一个是当
元素已经存在时的场景。以下是帮助您解决问题的简短片段:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <appSettings xdt:Transform="InsertIfMissing">
    </appSettings>
    <appSettings>
      <add key="Swagger.Contact.Name" value="Some Name" xdt:Transform="InsertIfMissing" />
      <add key="Swagger.Contact.Email" value="some@email.address" xdt:Transform="InsertIfMissing" />
    </appSettings>
</configuration>


让我知道这是否对您有效。

我考虑过这一点,但没有尝试,我会在有时间时这样做,因为我改为进行XML转换,其中文件的名称类似于
web.config.transform
。但是,它似乎插入了重复的条目,因此如果效果良好,我将改为这样做。:)从所做的有限测试来看,它似乎有效。:)