VS2022控制台应用添加System.Web.UI依赖失败,求助解决方案
问题根源
你当前在VS2022里创建的大概率是.NET Core/.NET 5+项目,这类现代.NET框架已经完全移除了System.Web命名空间(包括其中的UI控件),而旧版VS默认创建的是.NET Framework项目,所以之前能正常运行。手动添加.NET Framework的System.Web.dll会因为框架不兼容被拒绝,这是正常现象。
解决办法
方案1:切换到.NET Framework项目
- 打开VS2022,新建项目时选择控制台应用(.NET Framework),挑选一个合适的.NET Framework版本(推荐4.8)
- 把你的代码复制到新项目中,此时不需要额外添加引用——.NET Framework默认包含
System.Web程序集 - 直接运行即可生成预期的HTML表格
方案2:在现代.NET框架中用替代方案生成HTML
如果不想切换框架,你可以用字符串拼接或者ASP.NET Core提供的TagBuilder类来生成HTML:
方式A:简单字符串拼接(无需额外依赖)
using System.Text; var htmlBuilder = new StringBuilder(); htmlBuilder.Append("<table>") .Append("<tr>") .Append("<td>Some text... Istanbul</td>") .Append("</tr>") .Append("</table>"); string html = htmlBuilder.ToString(); Console.Write(html);
方式B:用TagBuilder(更规范,适合复杂场景)
- 在NuGet包管理器中安装
Microsoft.AspNetCore.Mvc.ViewFeatures - 使用以下代码:
using Microsoft.AspNetCore.Mvc.Rendering; using System.IO; using System.Text.Encodings.Web; // 构建表格元素 var table = new TagBuilder("table"); var row = new TagBuilder("tr"); var cell = new TagBuilder("td"); cell.InnerHtml.Append("Some text... Istanbul"); // 组装元素 row.InnerHtml.AppendHtml(cell); table.InnerHtml.AppendHtml(row); // 渲染成字符串 using (var sw = new StringWriter()) { table.WriteTo(sw, HtmlEncoder.Default); string html = sw.ToString(); Console.Write(html); }
内容的提问来源于stack exchange,提问作者Jeffrey Whitney
相关产品推荐
相关产品推荐

