【问题标题】:I get an exception when I instantiate a WebBrowser Control in my F# app在我的 F# 应用程序中实例化 WebBrowser 控件时出现异常
【发布时间】:2022-01-27 08:10:38
【问题描述】:

我正在尝试在我的 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。我在论坛和文档中搜索了答案或类似问题,但我没有找到可以引导我解决问题的东西。我们将不胜感激。

【问题讨论】:

  • 您的输出文件夹中有 System.Drawing.Common 的 DLL 吗?所以你的代码和 DLL 的结果都在同一个文件夹中。
  • 为什么在开放语句的末尾有分号?我认为不需要它们。
  • 我在一个小测试应用程序中编译了你的代码,我没有这个问题。我安装了 6.0.100 和 6.0.101 SDK,还有一堆旧的。您正在使用的其他库是否试图以与应用程序本身不同的版本引入 System.Drawing.Common?
  • 您是否在项目文件中引用 System.Drawing.Common?我在 .NET 6 中 don't think you're supposed to do that
  • @BentTranberg, 1.- 有分号,因为我将程序移植到 FSI 脚本进行调试 2.- 我在所有代码之前添加了这个指令:#r "C:\Program Files\dotnet \shared\Microsoft.WindowsDesktop.App\6.0.0\System.Windows.Forms.dll" 因为环境找不到对 winforms 库的引用 3.- 我的知识范围是我没有明确引用该 dll ,但我不是 100% 确定。

标签: .net-core f# windows-forms-core


【解决方案1】:

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

发生错误是因为运行时试图在输出文件夹中查找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 将解析所有必要的引用,您将能够运行程序

【讨论】:

  • 谢谢!看起来向前迈了一步,现在我收到此错误:“错误 NETSDK1136:目标平台必须设置为 Windows(通常通过在 TargetFramework 属性中包含'-windows')”并且当我将 TargetFramework 更改为 net6.0- windows 我收到此错误:错误 FS0010:定义中结构化构造的意外开始。应为“=”或其他标记。
  • 对不起我的错误,我发布的最后一个错误是我的库代码中的错误,它不再是命名空间引用问题,我的错。看起来这种变化是有效的:)。感谢@JL0PD 的帮助!
猜你喜欢
  • 2014-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多