所以我只是在我的项目中使用AjaxMin.dll缩小所有js / css文件的构建/部署,并使用默认设置。结果证明这是一个坏主意。我们拥有的第三方javascript文件之一有一个很好的eval语句,其中引用了一些变量或参数。当它被缩小时,原始变量将被重命名,而不是在eval语句中重命名。这导致了生产中的一个很大的错误(FML)。
我已经决定需要为缩小过程选择更安全的设置。
关于AjaxMin的文档非常不清楚。 http://www.asp.net/ajaxlibrary/AjaxMinWithAndEval.ashx
或许我只是不理解它。我正在使用代码(使用DLL)而不是命令行。
CodeSettings
类有一个EvalTreatment
类选项,但我不确定选择哪个最佳选项......
来自Microsoft(DLL源代码):
using System;
namespace Microsoft.Ajax.Utilities
{
public enum EvalTreatment
{
Ignore = 0,
MakeImmediateSafe = 1,
MakeAllSafe = 2,
}
}
我在想MakeImmediateSafe
(1)或MakeAllSafe
(2)?你们有什么感想?
提前致谢!
答案 0 :(得分:4)
如果您想绝对确定缩小的结果将始终工作,请使用 MakeAllSafe 选项。这将确保不会重命名eval语句范围内的任何变量,也不会重命名任何父范围中的变量。