1

我正在尝试在 nuget 包的目标处转换 unity.config 文件的内容。该文件如下所示:

<?xml version="1.0"?>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
  <container>
    <register type="SomeProject.Data.ISecurityManager, SomeProject.Data"
    mapTo="SomeProject.MockSecurityManager, SomeProject.Data" />
  </container>
</unity>

我想更新“mapTo”的值。我正在使用标准的 web.config.install.xdt 更新 web.config 中的一堆东西,但这里的关键问题似乎是统一命名空间和转换命名空间之间的命名空间冲突。因此,当我使用以下标头创建 xdt 进行转换时:

<unity xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

该文件中没有任何内容匹配,因为它正在查找具有实际根名称空间的文件,如下所示:

<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">

我开始倾向于使用 Powershell 脚本……任何人都可以使这种方法起作用吗?

4

1 回答 1

3

只需尝试为unity节点添加两个命名空间来转换配置。它看起来像这样:

<?xml version="1.0"?>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity" xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <container>
    <register xdt:Transform="Replace" 
              xdt:Locator="Match(type)"
              type="SomeProject.Data.ISecurityManager, SomeProject.Data"
              mapTo="It's my test type)">
    </register>
  </container>
</unity>

这对我来说可以。所以让我知道它是否不适合你。

于 2017-07-01T09:43:29.703 回答