2011-04-23 75 views
8

我正在创建一个需要修改目标应用程序的web.config文件的自定义程序包,但安装后,我的配置更改从未出现在目标应用程序中。NuGet web.config.transform问题

这是我的web.config.transform文件:

 
<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="AppInstalled" value="false"/> 
    </appSettings> 
</configuration> 

在appSettings部分该密钥从不应用。

这是我的nuspec文件:

 
<?xml version="1.0"?> 
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> 
    <metadata> 
    <id>$id$</id> 
    <version>$version$</version> 
    <authors>$author$</authors> 
    <owners>$author$</owners> 
    <licenseUrl>http://mvcapp.codeplex.com/license</licenseUrl> 
    <projectUrl>http://mvcapp.codeplex.com/</projectUrl> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>$description$</description> 
    <tags>mvc app</tags> 
    </metadata> 
    <files> 
    <file src="\bin\Release\MvcApp.MVC3.dll" target="lib" /> 
    <file src="NuGet\Content\ajax-loader.gif" target="Content" /> 
    <file src="NuGet\Content\web.config.transform" target="web.config" /> 
    <file src="NuGet\Views\Install\Index.aspx" target="Views\Install\Index.aspx" /> 
    </files> 
</package> 

这是我运行从VS 2010命令提示符包的项目的命令:

nuget pack mvcapp.csproj

什么想法?

谢谢。

回答

19

的web.config.transform文件需要进入内容文件夹:

<file src="NuGet\Content\web.config.transform" target="content" /> 
+3

是的,这只是我在我的nuspec文件中发现的问题之一。我再次查看文档并采取措施删除nuspec文件中的“files”元素,并将NuGet约定与nuspec文件所在文件夹下的/ lib和/ content文件夹一起使用。它对我来说效果更好。谢谢。 – Kahanu 2011-06-01 20:40:52

+0

最重要的是,我发现如果节点已经存在于目标解决方案中,转换将不起作用。 xdt对我更好: Calvin 2016-10-17 22:02:12

0

我知道这是一个老问题,但它的顶部谷歌搜索结果中的一个为什么一个web.config搜索时.transform将不适用,所以我希望在这里我不会不适用。

TLDR; - 在迭代测试之间从目标项目的packages目录中清除nuget文件(或者我假设版本号)。

完整版; 我也有这个问题。我可以看到使用NuGet包资源管理器,我的项目打包得当。我有我的web.config.transform下的“内容”,我的库下各自的lib文件夹。该dll的部署,web.config.transform没有得到应用。

我正在测试的目标项目是在源代码控制下,所以我会添加nuget包,查看发生了什么,然后回滚整个目录。但是我没有注意到packages文件夹不在源代码控制之下,所以我的初始软件包安装文件夹就在那里。我没有在nuspec包中增加版本号,因为我不认为我必须这样做。

最终,我最终不得不从项目的packages目录中清除我的nuget包的目录,迫使下一次nuget安装尝试重新创建它们。