Nuget 在新解决方案上安装时出现app.config转换问题

Nuget 在新解决方案上安装时出现app.config转换问题,nuget,xdt,Nuget,Xdt,我有一个包,它在项目中应用app.config转换。转换文件如下所示 <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="handlerId" value="$assemblyname$"/> <!--populate from project params--> <--other params-->

我有一个包,它在项目中应用app.config转换。转换文件如下所示

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="handlerId" value="$assemblyname$"/> <!--populate from project params-->
    <--other params-->
  </appSettings>
</configuration>

我尝试改用xdt转换。它们在使用app.config更新包或在project上安装包时非常有效,但如果没有app.config,nuget不会创建它。

转换过程不会区分键或值属性。它们都只是属性。因此,它没有意识到您的特定更改是无关紧要的,并且它不需要再次添加已定义的元素

当NuGet将转换文件合并到项目的配置中时 文件中,它仅向中的现有元素添加元素或添加属性 配置文件;它不会更改现有的元素或属性 属性的任何其他方式


据nuGet所知,value=“MyApp”可能定义其特定包所需的内容,如果该元素+属性不存在,则包将无法正常工作。

面临同样的问题。在我的例子中,复制的密钥是在CI服务器构建项目时添加的,从而导致测试失败

我已经围绕这一点,对每个元素进行了注释。因此,我的
app.config.transform
文件是:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
     <!--add key="handlerId" value="MyApp"/-->
  </appSettings>
 </configuration>

安装软件包时,由用户取消对新设置的注释


这不是一个很好的解决方案,但它很有效

正如我前面提到的,我用xdt转换文件解决了这一部分。如果我能用xdt创建app.config文件,那就太好了,所以我需要一些方法来合并这些方法
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="handlerId" value="MyApp1"/>
    <add key="handlerId" value="MyApp"/> <!--shouldn't appear!-->
  </appSettings>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
     <!--add key="handlerId" value="MyApp"/-->
  </appSettings>
 </configuration>