5

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

该文件中有很多 TODO 注释,讨论如何更改代码以执行您想要的操作。这很好,但是当更新 NuGet 包时,它会看到我已经更改了文件并且没有拉下更新的版本。这里的问题是我丢失了对该文件的任何更新,并且取决于包中的其他更新,使其无法使用(例如,在 App_Start 中修改 MiniProfiler.cs 后将 MiniProfiler.MVC3 从版本 1.9 升级到版本 2.0.1 时,该项目将不再构建,因为在 2.0.1 版本中对该文件进行了必要的更改)。

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

4

3 回答 3

1

您可以在 App_Start 中备份文件,更新它,然后手动合并文件,或使用合并工具。如果您使用源代码管理,您可能最终还是会这样做。

于 2012-05-02T16:41:35.133 回答
0

Quick-and-dirty:创建你想要的文件。然后在每次使用 nugget 升级时复制/合并。或者每次编译。增加的构建时间可以忽略不计。

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

于 2012-05-02T19:34:36.253 回答
0

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

以供参考:

于 2012-05-04T16:53:16.447 回答