为什么ASP.NET自动生成的.designer代码的类型不正确?

为什么ASP.NET自动生成的.designer代码的类型不正确?,asp.net,dotnetnuke,Asp.net,Dotnetnuke,我正在研究对DotNetNuke事件模块的破解。我已经设置了源代码,它没有修改就生成了A-OK。但是,当我更改EventMonth.ascx文件时,Visual Studio会更新与其关联的.designer.vb文件。。。并声明两个类型错误的对象!看起来是这样的: Protected WithEvents EventIcons As Global.System.Web.UI.UserControl Protected WithEvents EventIcons As Global.DotNe

我正在研究对DotNetNuke事件模块的破解。我已经设置了源代码,它没有修改就生成了A-OK。但是,当我更改EventMonth.ascx文件时,Visual Studio会更新与其关联的.designer.vb文件。。。并声明两个类型错误的对象!看起来是这样的:

Protected WithEvents EventIcons As Global.System.Web.UI.UserControl
Protected WithEvents EventIcons As Global.DotNetNuke.Modules.Events.EventIcons
应该是这样的:

Protected WithEvents EventIcons As Global.System.Web.UI.UserControl
Protected WithEvents EventIcons As Global.DotNetNuke.Modules.Events.EventIcons
显然,这是行不通的。。。编译器(正确地)在代码中使用事件图标时抛出错误。这是什么原因?我可以很容易地手动修复它,但之后它当然会再次损坏。我不认为控件的ID与类名相同是事实,因为同一控件的另一个实例会发生同样的事情,但名称不同

更新:好的。。。我相信这是因为在设计时找不到引用的用户控件。但它显然在运行时起作用:

<%@ Register TagPrefix="evt" TagName="Icons" Src="~/DesktopModules/Events/EventIcons.ascx" %>


这是合乎逻辑的。。。但我想问题会变成“在设计时~解决了什么?”我想我可以把它改成简单的“EventIcons.ascx”,它会生成代码OK。但它在运行时会工作吗|

~解析为应用程序文件夹的根目录。

因为项目不是从应用程序根目录开始的,所以在项目能够正确解析
~
之前,您必须告诉项目真正的应用程序根目录在哪里。进入项目属性的Web选项卡,确保在“服务器”标题下选择了“使用本地IIS Web服务器”。将项目URL设置为特定项目的URL(即)。然后,检查覆盖应用程序根URL并将其设置为应用程序的根URL(即)。这将允许web应用程序项目知道如何查找这些控件


Src
属性与控件相关,因此只需将其设置为
“EventIcons.ascx”
即可,而不是从应用程序的根目录中指定它。

答对了。显然,~需要从实际应用程序主机之外的某个地方获取其值。谢谢有关不涉及应用程序根本问题/解决方案的相关问题,请参见。