我正在创建一个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标签 - 任何想法?
答案 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
如果您发布初始标记以及您希望它看起来像什么,也许我们可以帮助更多:)