添加到ASP.NET表示控件的具有runat =“server”属性的新div元素不需要编译,但任何人都可以解释为什么这样做没有重建?如果要执行重建,程序集是否包含任何新信息?
我试图了解.NET框架如何处理这些更改以及为什么可以添加runat =“server”控件而无需重建相关程序集。
添加新的runat =“server”控件时,相关的设计器文件会更新以包含其他引用,因此编译的输出会有所不同。
是否有人知道我可以使用哪些工具来检查此详细程度的程序集并执行并排比较以识别其内容中的微小更改?
它可以在没有重建的情况下工作,所以我为什么要关心?
我有一个当前项目的修复程序,它涉及添加一个新的runat =“server”div元素,我需要知道是否可以在没有新程序集的情况下部署此修复程序。
我知道它会起作用,但我需要知道在部署aspx文件和使用重建的dll部署aspx文件之间的技术差异(如果有的话)。
提出这个问题是为了帮助编写我无法直接访问的生产环境的部署过程。客户特别热衷于跟踪变更并保持清晰的审计跟踪。
对于快速生产和部署,修补程序的部署包必须很小,但必须确保环境匹配。
答案 0 :(得分:1)
它的工作原理是因为你只更改了标记,所以新的HTML div将在页面中呈现,没有任何东西会破坏,因为后面的代码不知道新控件,所以甚至不尝试使用它。
答案 1 :(得分:0)
所有html控件(如div,tr-s,td-s等)都位于aspx文件中,添加runat="server"
不需要重建。这基本上将它们转换为服务器端控件,并且它们将使用完整的asp.net生命周期进行处理。
但是你需要记住,一旦你使用它,例如:Div1.Visible = false;
它将需要重建。
答案 2 :(得分:0)
回顾未解答的问题,尽可能提供更新。
提出这个问题是为了理解.NET框架在runat =" server"方面的内部工作原理。控件。
添加新控件时,我可以看到设计器文件发生变化,这表明在构建时相关的dll会有所不同。
但是,您可以对aspx元素进行更改并在没有新dll的情况下进行部署,并且它可以正常工作,不会抛出任何错误,说aspx包含了一个runat =" server"控制装配不知道。
这是对runat ="服务器"的放松处理。控制我试图理解。
有用的工具
对于有兴趣了解编译输出的人,可以使用以下工具对程序集进行反编译以查看其内容:
https://www.jetbrains.com/decompiler/
FYI:使用反编译器我可以看到引用包含在dll中,这意味着添加了一个runat ="服务器"控件将更改您的程序集。如果环境必须相同,则必须部署程序集。