【问题标题】:Issue with nuget config transformation filesnuget 配置转换文件的问题
【发布时间】:2013-03-14 20:46:49
【问题描述】:

我正在创建一个 nuget 包,除了其他文件之外还包含配置文件,例如:f1.config、f2.config 等。这些配置文件又在 web.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>

【问题讨论】:

    标签: nuget config-transformation


    【解决方案1】:

    如何安装/卸载配置文件?您能否从您的脚本中分享一些 PowerShell sn-ps(假设您在包中使用 PowerShell install.ps1/uninstall.ps1 脚本)?

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

    此外,如果 XDT 成为 OSS 以使 NuGet 从中受益,该功能可能会在未来得到改进。

    【讨论】:

    • 配置文件作为 NuGet 包安装的一部分进行安装。我编辑了问题以包含 NuGet 规范文件。我根本没有使用 install.ps1/uninstall.ps1。
    • 卸载期间是否在日志(Visual Studio 输出窗口)中找到任何内容?在卸载过程中,NuGet 会跳过安装后修改过的文件。
    • 只有两条消息:成功从 TestMvcApp 中删除了“WCFServicesProxyPackage 1.0.3”并成功卸载了“WCFServicesProxyPackage 1.0.3”。安装包之前不存在的 *.config 文件保留在项目中,而存在的内容将恢复为安装之前的内容。我希望描述是有道理的。谢谢泽维尔。
    • 如果不对 *.config 文件进行任何调整,则预期的行为是将内容恢复为存在的原始文件,并删除不存在的文件。后者似乎是个问题。您能否在nuget.codeplex.com 上提交错误并附上重现步骤(最好附上示例包)?
    • 谢谢泽维尔。我会尽快提交错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    相关资源
    最近更新 更多