在我的 F# 应用程序中实例化 WebBrowser 控件时出现异常

I get an exception when I instantiate a WebBrowser Control in my F# app

我正在尝试在我的 F# 应用程序中实例化 WebBrowser 控件:

open System;;
open System.Net.Http;;
open System.Windows.Forms;;
...
let browser =
    new WebBrowser(ScriptErrorsSuppressed = true,
                   Dock = DockStyle.Fill,
                   DocumentText = fsharpOrg.Result)

但是我得到这个例外:

System.IO.FileLoadException: **Could not load file or assembly 'System.Drawing.Common**, Version=6.0.0.0,...

我使用的是 dotnet sdk 版本 6.0.100。我在论坛和文档中搜索了答案或类似问题,但没有找到可以引导我进行修复的内容。我们将不胜感激。

不要在代码中使用 #r,仅在脚本文件中使用。

发生错误是因为 运行time 试图在输出文件夹中找到 System.Drawing.Common,例如bin/debug/net6.0/,但不在 C:/Program Files/dotnet/shared/...

要修复错误,您应该:

  1. 创建项目文件,
  2. <UseWindowsForms>true</UseWindowsForms> 添加到 <PropertyGroup>,因此项目将如下所示:
<Project Sdk="Microsoft.Net.SDK">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <OutputType>winexe<OutputType>
    <UseWindowsForms>true</UseWindowsForms> <!-- all magic in this line -->
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="Program.fs" />
  </ItemGroup>
</Project>
  1. MSBuild 将解析所有必要的引用,您将能够运行编程