C#,.NET 2.0
我有一个ASP.NET网站解决方案,其中包含2个其他项目(用作库引用)。在Visual Studio中构建(调试或发布)时,一切正常。但是,使用MSBuild构建失败。
这个构建曾经可以工作(实际上是通过nAnt任务调用的)。唯一改变的是我有一个新的用户控件,我正在代码后台引用它的类型。
有问题的代码位于我的ASPX代码后台。MessageAlert是用户控件:
MessageAlert userControl = this.LoadControl("~/UserControls/MessageAlert.ascx") as MessageAlert;
userControl.UserMessage = message;
this.UserMessages.Controls.Add(userControl);
为了让Visual Studio识别类型'MessageAlert',我需要:
1)在用户控件顶部的@Control标记中设置ClassName="MessageAlert"(因为使用自动生成的UserControls_MessageAlert也不起作用)
2)在我的ASPX的标记中注册用户控件,使用@Register 3)在我的代码后面添加"using ASP"
经过这些步骤,我可以成功地从Visual Studio的代码后台引用MessageAlert类型。但是从MSBuild中,我得到了"The type or namespace name 'MessageAlert' could not be found (are you missing a using directive or an assembly reference?)"。
MSBuild执行非常简单-它指向完全相同的解决方案文件,并将配置属性设置为发布。
基于我必须经历的步骤数量来获取Visual Studio中对MessageAlert的类型引用,似乎在MSBuild过程中缺少了某些东西。但是什么呢?实际上,Visual Studio是否在幕后调用MSBuild?
有没有更好的方法在ASPX的代码后台引用UserControl类型?
编辑:为了澄清,MessageAlert用户控件不在其他已引用的程序集/项目中。我提到它们是因为它们与网站一起组成了解决方案文件,该文件与MS Build构建的相同sln文件。