C# 是否有办法防止通过asp.net System.Web.Optimization重命名某些变量
我正在AngularJS项目中使用ASP.Net捆绑和缩小(C# 是否有办法防止通过asp.net System.Web.Optimization重命名某些变量,c#,asp.net,bundling-and-minification,C#,Asp.net,Bundling And Minification,我正在AngularJS项目中使用ASP.Net捆绑和缩小(System.Web.Optimization) 除了一个场景外,一切都非常顺利 此时,我们必须使用一个表达式。我们知道这并不理想,但目前还没有另一种解决方案来满足我们的需求 所以我们有这条线: var isValid = eval('globalJson.Permissions.' + attrs.drHasPermissionFor); 现在,由于缩小更改了变量的名称,因此不存在etcglobalJson,因此此行失败 是否有方法
System.Web.Optimization
)
除了一个场景外,一切都非常顺利
此时,我们必须使用一个表达式。我们知道这并不理想,但目前还没有另一种解决方案来满足我们的需求
所以我们有这条线:
var isValid = eval('globalJson.Permissions.' + attrs.drHasPermissionFor);
现在,由于缩小更改了变量的名称,因此不存在etcglobalJson
,因此此行失败
是否有方法指示ASP.Net缩小以不重命名特定变量
更新
根据给出的答案,我们已经开始使用Angulars安全的注射方法
使用此命令的指令如下所示:
appDirectives.directive('drHasPermissionFor', ['globalJson', function (globalJson) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
//code .....
// how can I reference the injected globalJson here - so that i know it's using the
// newly minified name..
var isValid = eval('globalJson.Permissions.' + attrs.drHasPermissionFor);
//more code......
}
};
}]);
Angular有这样一种处理缩小的机制。您必须使用称为内联注释的内容 这是通过允许缩小器缩小注释来实现的,然后angular将使用注释来确定缩小后的变量名 因此,您可以只注入您想要使用的变量并使用缩小的变量 这里还有一篇好文章:
好的-一位同事想出了一个解决这个问题的办法 虽然它解决了手头的问题,但它并没有真正回答“你能告诉优化不要使用某些变量吗?” 如果最初的问题得到回答,我将很高兴地更改已接受的答案 目前,这可以像这样进行黑客攻击:
appDirectives.directive('drHasPermissionFor', ['globalJson', function (globalJson) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
// this function will return the minified globalJson
function returnGlobalJson() {
return globalJson;
};
// call this function as part of the eval - works perfectly :)
var isValid = eval('returnGlobalJson().Permissions.' + attrs.drHasPermissionFor);
}
};
}]);
我正在使用BuildBundlerMinifier,使用函数的解决方案不起作用,因为函数也被缩小了 我使用的解决方案是将变量复制到
this
并在eval中使用this.value
,然后将值复制回变量
仍然是一个解决方法,但可能会帮助其他人…谢谢。我们已经在使用缩小安全注射。我的问题不是特别清楚-只是更新了:)55k,你只给出链接答案?不好意思。@MikeSmithDev-当我最初发帖时,问题中没有足够的信息来提供一个与他正在做的事情相匹配的例子,所以我所能做的就是提供一般信息让他自己弄清楚。他后来补充了额外的信息,因为他已经在做我建议的事情了,所以没有必要添油加醋。除了“link only”的意思是“link only”之外,我还提供了大量的解释。我也有同样的问题,但解决方案并没有告诉我为什么函数也在缩小。函数名“returnGlobalJson”没有缩小;只有变量和参数。因此,您可以安全地对该名称进行求值。我使用的是bundle、.NET 4.5,而bundle是minificando函数,是否有与minificar不同的参数?