gpt4 book ai didi

asp.net - 自动生成的 ASP 命名空间是如何为 ASP.NET 网站项目实现的,从开始(构建)到完成(运行时)?

转载 作者:行者123 更新时间:2023-12-04 16:52:05 27 4
gpt4 key购买 nike

'ASP' 命名空间似乎是一个生成的,因为它没有在网站项目的源代码中使用,任何地方(或者至少没有被网站程序员明确使用)。 我想知道它是如何完全实现的。

For example:
Is it the responsibility of MSBuild to drive creation of the ASP namespace and if so, where is that instruction found? I know the C# compiler won't create a namespace from nothing of its own volition, so the ASP namespace must be fed into it, even if not used by the website programmer. Maybe it's generated into the source code by a different tool. The 'Temporary ASP.NET Files' folder might have some bearing on it. As you can see, I want all the gory details in order to unlock and understand that namespace ...



Visual Studio 似乎具有允许使用 ASP 命名空间的工具(对它的 IntelliSense 支持),但这掩盖了我对它的理解。

网站中的“ASP”命名空间是如何从头到尾实现的?

(我还没有找到解释这一切的好文章。)

此处 ASP 命名空间显示在 .NET Reflector 中。 (这张图片取自 Rick Strahl's blog )

enter image description here

最佳答案

ASP.命名空间可用于动态加载自定义控件,使转换工作更安全。

您可以控制自定义控件在 ASP 中可以采用的名称。命名空间通过放置 ClassName="ControlClass"关于命名空间和动态控件的声明,现在将有对 ASP.ControlClass 的引用。使用 LoadControl 时进行安全转换

您可以在 MSDN http://msdn.microsoft.com/en-us/library/c0az2h86(v=vs.100).aspx 上阅读完整的步骤

当你不使用ASP。命名空间并离开控件采用自动名称,然后案例可能会失败(我不知道为什么,但它不时地在我的服务器上失败)创建的引用是

namespace ASP
{
[CompilerGlobalScope]
public class Control_Class_nameByDirectory : ControlClass
{
[DebuggerNonUserCode]
public ControlClass();

protected override bool SupportAutoEvents { get; }

[DebuggerNonUserCode]
protected override void FrameworkInitialize();
}
}

当你尝试制作像 (ControlClass)LoadControl("~/module/Control.ascs") 这样的类型转换时它可能会失败,因为它被识别为 Control_Class_nameByDirectory而不是 ControlClass
现在,如果您像 MSD 所说的那样在控件标题上声明 ClassName,结果是控件获得与您定义的 ClassName 相同的 ClassName:
namespace ASP
{
[CompilerGlobalScope]
public class ControlClass : global::ControlClass
{
[DebuggerNonUserCode]
public ControlClass();

protected override bool SupportAutoEvents { get; }

[DebuggerNonUserCode]
protected override void FrameworkInitialize();
}
}

在这里您可以使用 ASP.ControlClass如果它失败,则无需担心控制权。

因此,请遵循此处描述的步骤 http://msdn.microsoft.com/en-us/library/c0az2h86(v=vs.100).aspx你可以避免这样的问题。 (而且我已经面对他们)

无法在不引用 ASP 的情况下设置自定义控件的问题。命名空间已在 Dot net 4.0 和 4.5 版本中出现。最糟糕的是,这是一个随机故障——这意味着有时会发生,有时不会,而我无法找到原因。

关于asp.net - 自动生成的 ASP 命名空间是如何为 ASP.NET 网站项目实现的,从开始(构建)到完成(运行时)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018704/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com