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

时间:2017-06-29 19:56:27

标签: unity-container nuget-package xdt-transform

我试图在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>

我想更新&#34; mapTo&#34;的值。我使用标准的web.config.install.xdt更新了web.config中的一堆内容,但是这里的关键问题似乎是Unity命名空间和转换命名空间之间的命名空间冲突。因此,当我使用以下标题创建一个xdt进行转换时:

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

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

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

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

1 个答案:

答案 0 :(得分: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>

对我来说很好。如果它不适合你,请告诉我。