2015-09-09 168 views
2

我最近更新了一个我的nuget软件包,以便它现在需要在应用程序设置中显示在消费项目中。我想将一个app.config变换添加到包中,以便任何使用我的包的新版本的人都将使用一些默认值填充此应用程序设置。为此,我遵循this post来创建app.config.install.xdt文件。如何在app.config上应用xdt转换来安装/更新nuget包?

<?xml version="1.0"?> 
    <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
     <appSettings xdt:Transform="InsertIfMissing">   
      <add key="CustomSetting" value="CustomValue" /> 
     </appSettings> 
    </configuration> 

我还添加了一行根据this stackoverflow post

 <file src="\Content\app.config.install.xdt" target="app.config" /> 

但是,我nuspec当我安装/更新此包中的消费者,我没有看到这个应用程序设置在应用程序中显示出来。消费者的配置。是否还有其他步骤我失踪?

+1

您还应该在您的条目中添加xdt:Transform =“InsertIfMissing”。否则,当你更新你的软件包时,密钥将被重新插入。 – Calvin

回答

5

nuspec文件条目看起来不正确。它应该是这样的:

<file src="Content\app.config.install.xdt" target="content" /> 

你的目标是app.config这是不正确的。 .xdt转换需要位于NuGet包内的内容目录中。

+0

你是什么意思 - “.xdt转换需要在NuGet包内的内容目录中”?你的意思是说,这个过程是创建nupkg文件,然后打开它并修改它?或者你的意思是在VS项目中创建一个名为'content'的文件夹并将.xdt文件放在那里? – barrypicker

+0

这意味着NuGet包(.nupkg)中应该有内容目录。您无需打开并修改使用'nuget pack'命令生成的.nupkg文件。您不需要在Visual Studio项目中创建文件夹。 –

+0

谢谢马特。似乎我需要将'文件'定义添加到spec文件中... – barrypicker