我有一个要求,我需要通过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对象的文档。
还有其他选择如何满足我不知道的这个要求吗?