Nuget System.IO.InvalidDataException:将转换应用于';web.config';

Nuget System.IO.InvalidDataException:将转换应用于';web.config';,nuget,nuget-package,Nuget,Nuget Package,我正在创建一个自定义包,安装时需要修改目标应用程序的web.config或app.config文件。我已经成功地创建并发布了该软件包,特别是遵循 但是,当我尝试在项目中安装软件包时,会出现以下错误: System.IO.InvalidDataException:将转换应用于项目“WebTestsNuget”中的“web.config”时出错源文档中没有与“/configuration/System.runtime.caching/memoryCache”匹配的元素。 我做了一些搜索,并建议删除.

我正在创建一个自定义包,安装时需要修改目标应用程序的web.config或app.config文件。我已经成功地创建并发布了该软件包,特别是遵循

但是,当我尝试在项目中安装软件包时,会出现以下错误:

System.IO.InvalidDataException:将转换应用于项目“WebTestsNuget”中的“web.config”时出错源文档中没有与“/configuration/System.runtime.caching/memoryCache”匹配的元素。

我做了一些搜索,并建议删除
.xdt
文件的
配置
节点中的
xmlns
属性。当我发布并再次尝试安装时,我发现了错误

System.IO.InvalidDataException:将转换应用于项目“WebTestSnGet”中的“web.config”时出错。“xdt”是未声明的前缀。

我发现了一个问题,但环境是单一发展的,这要追溯到2013年。我正在使用Visual Studio 2015和.NET 4.6.1进行我的工作,因此没有太大帮助

我还能做些什么来解决这个问题?
(注意:我正在使用Nuget 3.4.4.1321)

经过大量徒劳的搜索和试验,我终于尝试了旧的(Nuget 2.6之前)方法:使用
.transform
文件,效果非常好

在这里,使用XDT要简单得多。假设要转换
web.config
(或
app.config
)文件,则创建名为
web.config.transform
(或
app.config.transform
)的文件,并将希望合并到目标
.config
文件中的节点添加到目标中

例如,如果
.transform
文件包含以下内容:

<configuration>
    <system.webServer>
       <modules>
            <add name="MyNuModule" type="Sample.MyNuModule" />
       </modules>
    <system.webServer>
</configuration>
<configuration>
    .
    .
    <system.webServer>
       <modules>
            <add name="Module" type="Sample.Module" />
       </modules>
    <system.webServer>
    .
    .
</configuration>

目标配置文件包含以下内容:

<configuration>
    <system.webServer>
       <modules>
            <add name="MyNuModule" type="Sample.MyNuModule" />
       </modules>
    <system.webServer>
</configuration>
<configuration>
    .
    .
    <system.webServer>
       <modules>
            <add name="Module" type="Sample.Module" />
       </modules>
    <system.webServer>
    .
    .
</configuration>

.
.
.
.
合并后的结果将是

<configuration>
    .
    .
    <system.webServer>
       <modules>
            <add name="MyNuModule" type="Sample.MyNuModule" />
            <add name="Module" type="Sample.Module" />
       </modules>
    <system.webServer>
    .
    .
</configuration>

.
.
.
.

如果目标文件没有
节点,甚至没有
节点,它会相应地添加它。

经过大量徒劳的搜索和尝试,我终于尝试了旧的(NuGet 2.6之前)方法:使用
.transform
文件,效果非常好

在这里,使用XDT要简单得多。假设要转换
web.config
(或
app.config
)文件,则创建名为
web.config.transform
(或
app.config.transform
)的文件,并将希望合并到目标
.config
文件中的节点添加到目标中

例如,如果
.transform
文件包含以下内容:

<configuration>
    <system.webServer>
       <modules>
            <add name="MyNuModule" type="Sample.MyNuModule" />
       </modules>
    <system.webServer>
</configuration>
<configuration>
    .
    .
    <system.webServer>
       <modules>
            <add name="Module" type="Sample.Module" />
       </modules>
    <system.webServer>
    .
    .
</configuration>

目标配置文件包含以下内容:

<configuration>
    <system.webServer>
       <modules>
            <add name="MyNuModule" type="Sample.MyNuModule" />
       </modules>
    <system.webServer>
</configuration>
<configuration>
    .
    .
    <system.webServer>
       <modules>
            <add name="Module" type="Sample.Module" />
       </modules>
    <system.webServer>
    .
    .
</configuration>

.
.
.
.
合并后的结果将是

<configuration>
    .
    .
    <system.webServer>
       <modules>
            <add name="MyNuModule" type="Sample.MyNuModule" />
            <add name="Module" type="Sample.Module" />
       </modules>
    <system.webServer>
    .
    .
</configuration>

.
.
.
.
如果目标文件没有
节点,甚至没有
节点,它将相应地添加它