Nuget包 - Web.config.transform添加

时间:2013-06-13 16:33:42

标签: asp.net nuget nuspec

我正在创建一个NuGet包,并希望它使用某些设置更新Web项目Web.Config文件。我使用web.config.transform编辑应用程序的web.config文件。当我简单地添加appSettings时,它运行良好 - 就像这样:

<configuration>
  <appSettings>
    <add key="WebPToolFolder" value ="~/Tools"/>
    <add key="ImagesFolder" value ="~/Content/themes/base/images"/>
  </appSettings>
</configuration>

但是,如果我尝试添加staticContent,它似乎不会改变标签。例如,这是web.config.transform文件:

<configuration>
  <appSettings>
    <add key="WebPToolFolder" value ="~/Tools"/>
    <add key="ImagesFolder" value ="~/Content/themes/base/images"/>
  </appSettings>
<system.webServer>
    <staticContent>
      <mimeMap fileExtension=".webp" mimeType="image/webp" />
    </staticContent>
  </system.webServer>
</configuration>

它更新appSettings,但不更新staticContent标签 - 任何想法?

3 个答案:

答案 0 :(得分:3)

您需要在web.config中放置一个空<staticContent></staticContent>,然后在元素上使用xdt:Transform =“Insert”,如下所示:

您的web.config:

<configuration>
  <appSettings>
     <add key="WebPToolFolder" value ="~/Tools"/>
     <add key="ImagesFolder" value ="~/Content/themes/base/images"/>
  </appSettings>
  <system.webServer>
    <staticContent>
    </staticContent>
  <system.webServer>
</configuration>

然后您可以在转换文件中插入一个值,如下所示:

    <system.webServer>
    <staticContent>
        <mimeMap fileExtension=".webp" mimeType="image/webp" xdt:Transform="Insert"/>
    </staticContent>
</system.webServer>

花了一会儿才发现。希望这会有所帮助。

答案 1 :(得分:3)

旧问题,但如果有人登陆,以下情况应该有效:

在您的情况下添加/更新staticContent元素:

这是另一种解决方案,所以你不会使用.transform文件,而是使用web.config.install.xdt(和web.config.uninstall.xdt),我发现它更好:

<?xml version="1.0"?>
  <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <!-- some other elements -->
  <staticContent xdt:Transform="InsertIfMissing">
    <mimeMap fileExtension=".webp" mimeType="image/webp" xdt:Locator="Match(fileExtension)" xdt:Transform="InsertIfMissing" />
  </staticContent>
  <!-- some other elements -->
</configuration>

这样您就不需要进行任何更新前的准备工作,只需升级包即可。

从Nuget 2.6开始检查this post的XDT支持。

答案 2 :(得分:0)

您是否尝试过将xdt:Transform =“Replace”属性添加到要更新的代码中?

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings>
    <add key="WebPToolFolder" value ="~/Tools" xdt:Transform="Replace"/>
    <add key="ImagesFolder" value ="~/Content/themes/base/images" xdt:Transform="Replace"/>
  </appSettings>
  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".webp" mimeType="image/webp" xdt:Transform="Replace"/>
    </staticContent>
  </system.webServer>
</configuration>

有一些很好的Microsoft文档here

如果您发布初始标记以及您希望它看起来像什么,也许我们可以帮助更多:)