如何转换 nuget 包中的 unity.config 文件?

How can I transform a unity.config file in a nuget package?

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

<?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 中的一堆内容,但这里的关键问题似乎是统一命名空间和转换命名空间之间的命名空间冲突。因此,当我使用以下 header 创建 xdt 进行转换时:

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

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

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

我开始倾向于使用 Powershell 脚本...任何人都可以使这种方法奏效吗?

只需尝试为 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>

对我来说效果很好。如果它对您不起作用,请告诉我。