我有一個NuGet包用下面的Web.config.install.xdtInsertIfMissing中的NuGet Web.config.install.xdt替換現有值
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<foo bar="something" xdt:Transform="InsertIfMissing" />
</configuration>
變換初始安裝後,消費者將改變屬性值爲bar
,即爲。
<configuration>
<foo bar="someothervalue" />
</configuration>
我的問題是,在包的後續更新,我想插入默認值,只有當節點foo
不存在。隨着當前變換節點總是被替換回
<configuration>
<foo bar="something" />
</configuration>
我試過在xdt:Locator
下面的表達式,試圖確定是否該節點已存在,沒有任何運氣。
xdt:Locator="Condition(boolean(//configuration/*[local-name()='foo']))"
xdt:Locator="XPath(/configuration/foo[1])"
這些工作正常,當我在Visual Studio中「預覽變換」,但在更新Nuget包期間失敗。我猜Nuget對這些表達式的支持有限,但我無法找到關於這個主題的任何文檔。
我在VS 2015.3測試與NuGet包管理器1996年3月5日和3.4.4.1321,並與2017年VS預覽(26020)
有誰知道如何解決這個問題?
它是一個自定義軟件包還是默認的軟件包?你可以在這裏分享嗎?你是如何更新你的軟件包的?像本文檔一樣:http://blog.nuget.org/20130920/how-to-use-nugets-xdt-feature-examples-and-facts.html•如果缺少當前Web.config中的元素,插入一部分元素,可用的目標部分是否包含不同的元素? –