gpt4 book ai didi

.net - MSBuild 失败,但在 Visual Studio 中构建工作正常

转载 作者:行者123 更新时间:2023-12-05 04:19:08 25 4
gpt4 key购买 nike

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) 使用@Register 在我的 ASPX 标记中注册用户控件

3) 在我后面的代码顶部添加一个“using ASP”

完成这些步骤后,我可以从 visual studio 在我的代码隐藏中成功引用 MessageAlert 类型。但是从 MSBuild 我得到“找不到类型或 namespace 名称‘MessageAlert’(您是否缺少 using 指令或程序集引用?)”

MSBuild 执行非常简单 - 它指向同一个解决方案文件并将配置属性设置为发布。

根据我在 Visual Studio 中获取对 MessageAlert 的类型引用所必须执行的步骤数,似乎在 MSBuild 过程中缺少某些东西。但是什么? Visual Studio 实际上不会在幕后调用 MSBuild 吗?

有没有更好的方法在 ASPX 的代码中引用 UserControl 类型?

编辑:澄清一下,MessageAlert 用户控件在其他引用的程序集/项目中。我提到它们是因为与网站一起组成了解决方案文件,该文件与 MS Build 正在构建的 sln 文件相同。

最佳答案

我也遇到了你上面描述的这个问题。

我不知道为什么会这样,作为最后的措施,我决定尝试以下方法并取得成功。

更改用户控件的类名 - 实际类名而不是 aspx 文件中的类名。

因此在您的示例中将类名更改为 MessageAlert(来自 UserControls_MessageAlert),同时在 aspx 的继承中更改此名称

希望这对某人有帮助

关于.net - MSBuild 失败,但在 Visual Studio 中构建工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/885334/

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