2012-04-26 29 views
5

MiniProfiler.MVC3 NuGet包中,它在App_Start中创建一个用于控制MiniProfiler设置的文件(使用SqlFormatter,修改ViewEngines,何时启动MiniProfiler等)。在App_Start中编辑MiniProfiler.cs后更新MiniProfiler.MVC3 NuGet包

在这个文件中有很多关于如何改变代码来执行你想要的东西的评论。这很好,但是当NuGet包更新时,它会看到我已经更改了文件,而不是下拉更新的版本。这里的问题是我失去了对该文件的任何更新,并且取决于软件包中的其他更新,使其不可用(例如,在修改App_Start中的MiniProfiler.cs之后将MiniProfiler.MVC3从版本1.9升级到版本2.0.1时,该项目将不再生成,因为在2.0.1版本中需要对该文件进行更改)。

处理这个问题的最佳方法是什么?我应该在App_Start中创建自己的文件,而不是修改NuGet包中的文件,确保在升级到最新版本的NuGet包时始终获得完整更新?

回答

1

您可以在App_Start中备份文件,进行更新,然后手动合并文件或使用合并工具。无论如何,如果你使用源码控制,你最终可能会这样做。

0

快速和肮脏:创建你想要的文件。然后在每次使用金块进行升级时复制/合并。或者每次编译。增加的构建时间可以忽略不计。

略好:在visual studio中使用预编译事件并比较文件。如果它们不同 - 要么复制或告诉用户。我无法想出一个方法来显示消息框或类似的东西,但我总是可以创建一个带有编译错误的新文件,并在“xxx文件中存在差异”附近显示一些文本。

0

尝试使用mercurial队列。你可以得到你想要的代码(不包括你引用的文件),然后提交。对文件进行更改,并将其推送到队列中。确保从任何未来的更新(手动)中排除它,然后当你想更新你的软件包时,将其从你的代码库中弹出。这将使它看起来像过去一样,并运行nuget更新。然后,您可以将队列推回到代码中,并且您的更改将重新应用。它可能需要一些摆弄,但值得一看。

参考: