NuGet - 仅在初始安装时将文件复制到项目中

时间:2013-09-25 19:12:14

标签: powershell nuget nuget-package

我有一个要求,我需要通过NuGet将配置文件安装到目标项目中。这些文件应由最终用户编辑,因此不应更新。

我尝试将配置文件拆分成他们自己的NuGet包,并使用NuGet的版本控制来解决这个问题,但它不起作用。没有办法限制它,所以升级者永远不会得到新版本和新安装程序获得最新版本。例如:

<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <!-- Other Stuff Omitted -->
        <dependencies>
            <group targetFramework="net35">
                <dependency id="MyPackage.MVC4.Core" version="[$version$]" />
                <dependency id="MyPackage.Web" version="[4,5)" />
            </group>
            <group targetFramework="net40">
                <dependency id="MyPackage.MVC4.Core" version="[$version$]" />
                <dependency id="MyPackage.Web" version="[4,5)" />
            </group>
            <group targetFramework="net45">
                <dependency id="MyPackage.MVC4.Core" version="[$version$]" />
                <dependency id="MyPackage.Web" version="[4,5)" />
            </group>
        </dependencies>
    </metadata>
</package>

这使得MyProject.Web的升级版本保持在当前版本,但是当安装在新项目中时,即使最新版本较高,MyPackage.Web的版本也不会超过4.0.x。

如果我尝试使用频谱的另一端并使用$ version $,它将被当前版本取代,那么使用旧版本NuGet的人最终会在升级时重置其配置文件,因为他们被迫更新他们的封装

所以我想尝试一种不同的方法。我正在考虑将文件放入“第一”目录,然后只有当它们不存在时才递归复制它们才是目标项目。但是,我遇到了另一个障碍 - 似乎没有任何传递给install.ps1脚本的$ package对象的文档。

还有其他选择如何满足我不知道的这个要求吗?

0 个答案:

没有答案