2013-03-13 66 views
0

我正在创建nuget软件包,除了其他文件还包含配置文件,如:f1.config,f2.config等。这些配置文件反过来在web.config文件中引用。nuget config转换文件的问题

由于这些配置文件可能存在也可能不存在于安装此软件包的项目中,因此我将它们重命名为f1.config.transform,f2.config.transform。

尽管在所有可能的情况下,软件包的安装完美无缺,但在某个特定情况下,卸载不能按预期工作。也就是说,如果假设在安装之前在项目中不存在配置文件f2.config,则在卸载软件包时它不会被删除。

任何想法?

编辑:的NuGet规范文件

<?xml version="1.0" encoding="utf-8"?> 
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> 
    <metadata> 
     <id>WCFServicesProxyPackage</id> 
     <version>1.0.3</version> 
     <title /> 
     <authors>Shkelzen a. Saraqini</authors> 
     <owners>Shkelzen a. Saraqini</owners> 
     <requireLicenseAcceptance>false</requireLicenseAcceptance> 
     <description>WCF services proxy package.</description> 
     <language>en-CA</language> 
     <references> 
      <reference file="WCFServices.Proxy.dll" /> 
     </references> 
    </metadata> 
    <files> 
     <file src="content\config\system.serviceModel.behaviors.Local.config.transform" target="content\config\system.serviceModel.behaviors.Local.config.transform" /> 
     <file src="content\config\system.serviceModel.behaviors.Production.config.transform" target="content\config\system.serviceModel.behaviors.Production.config.transform" /> 
     <file src="content\config\system.serviceModel.behaviors.QA.config.transform" target="content\config\system.serviceModel.behaviors.QA.config.transform" /> 
     <file src="content\config\system.serviceModel.bindings.Local.config.transform" target="content\config\system.serviceModel.bindings.Local.config.transform" /> 
     <file src="content\config\system.serviceModel.bindings.Production.config.transform" target="content\config\system.serviceModel.bindings.Production.config.transform" /> 
     <file src="content\config\system.serviceModel.bindings.QA.config.transform" target="content\config\system.serviceModel.bindings.QA.config.transform" /> 
     <file src="content\config\system.serviceModel.client.Local.config.transform" target="content\config\system.serviceModel.client.Local.config.transform" /> 
     <file src="content\config\system.serviceModel.client.Production.config.transform" target="content\config\system.serviceModel.client.Production.config.transform" /> 
     <file src="content\config\system.serviceModel.client.QA.config.transform" target="content\config\system.serviceModel.client.QA.config.transform" /> 
     <file src="content\Web.config.transform" target="content\Web.config.transform" /> 
     <file src="lib\net40\WCFServices.Proxy.dll" target="lib\net40\WCFServices.Proxy.dll" /> 
    </files> 
</package> 

回答

0

你如何安装/卸载配置文件?你能分享你脚本中的一些PowerShell代码片段(假设你在你的包中使用了PowerShell install.ps1/uninstall.ps1脚本)吗?

也许你可以强制删除文件:http://www.timvw.be/2011/10/18/force-the-removal-of-a-file-with-powershell/

而且,很可能这个功能将在未来得到改善,如果当XDT成为OSS对的NuGet从中受益。

+0

将配置文件安装为NuGet软件包安装的一部分。我编辑了问题以包含NuGet规范文件。我根本没有使用install.ps1/uninstall.ps1。 – UncleZen 2013-03-14 12:48:18

+0

在卸载过程中,您是否在日志(Visual Studio输出窗口)中找到任何内容?在卸载过程中,NuGet跳过安装后修改的文件。 – 2013-03-14 14:36:51

+0

仅两条消息:成功从TestMvcApp中删除'WCFServicesProxyPackage 1.0.3'并成功卸载'WCFServicesProxyPackage 1.0.3'。 软件包安装之前不存在的* .config文件保留在项目中,而那些存在的文件的内容会在安装之前恢复为内容。我希望说明是有道理的。谢谢泽维尔。 – UncleZen 2013-03-14 17:55:54