我有一个将app.config转换应用于项目的包。转换文件看起来像这样在新解决方案上安装时发生的app.config转换问题
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="handlerId" value="$assemblyname$"/> <!--populate from project params-->
<--other params-->
</appSettings>
</configuration>
的情况是:添加包到一个新的项目,没有的app.config,手动更新项目的app.config,然后更新包。
如果我包含app.config.transform到我的包nuget在项目中创建app.config,但是如果我更改参数值之一并更新/重新安装包,它会创建该参数的值与包的值而不是跳过它。
例如: 在清洁工程
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="handlerId" value="MyApp"/>
</appSettings>
</configuration>
安装包,那么改变handlerId价值MyApp1
和更新包。转换的结果是
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="handlerId" value="MyApp1"/>
<add key="handlerId" value="MyApp"/> <!--shouldn't appear!-->
</appSettings>
</configuration>
我试着改用xdt转换。它们在包更新或在app.config上安装项目时很好地工作,但是如果没有app.config,nuget不会创建它。
我用xdt trasformations文件解决了这个问题,正如我所说的那样。如果我可以用xdt创建app.config文件,那将会很棒,所以我需要一些方法来合并这些方法 – Redwan