我正在将一个遗留的.NET 4.x Web API和类库移植到.NET 7。该类库为Windows和Web环境服务,并具有公共类,这些公共类具有使用Windows窗体控件和Microsoft.AspNetCore.Http.HttpContext
项的函数重载。
我将类库升级为Windows窗体类库项目模板,然后添加Microsoft.AspNetCore.Routing
来访问Web内容。
当在Web API中添加对类库的引用时,它起作用.
然而,当我尝试示例化类库时,我得到了如下错误:
未能加载文件或程序集“System.Windows.Forms,版本=7.0.0.0,区域性=非特定,公钥标记=b77a5c561934e
是否不可能从Web项目访问完整的.NET核心(Windows窗体)环境?
我可以引用DLL,但是当我示例化类时,我得到了那个错误。
1条答案
按热度按时间efzxgjgh1#
您可以在ASP.NET Web应用程序中引用WinForms类库,但我无法轻松地想象在ASP.NET Web应用程序中使用WinForms控件的有效使用场景。但关键是您需要确保两个项目都使用
<TargetFramework>net7.0-windows</TargetFramework>
目标框架。在下面的例子中,在web应用程序中,我将示例化类库中的一个自定义控件,然后我只使用自定义控件的
DrawToBitmap
方法来创建一个图像,稍后我将在网页中显示该图像。下面是一个分步示例:
1.创建一个ASP.NET核心Web应用程序项目,选择. NET 7,并将其命名为Net7WebApplication。
1.编辑项目文件,并将目标框架更改为
<TargetFramework>net7.0-windows</TargetFramework>
。(您可以在项目属性页中执行相同的操作)1.添加一个新的WinForms控件库. NET项目,选择. NET 7,并将其命名为Net7WinFormsLibrary。
1.将class1.cs修改为以下代码:
1.将WinForms项目的引用添加到Web项目。
1.将Index.cshtml.cs修改为以下内容:
1.将Index. cshtml修改为以下内容:
1.保存所有内容并运行项目。就这样!