问题标签 [fsi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
types - 错误 FS0193:内部错误:无法从程序集“FSI-ASSEMBLY,版本=0.0.0.0,文化=中性,PublicKeyToken=null”加载类型“位置”
当我构建我的解决方案时,一切都很顺利。但是,当我尝试在 FSI 中运行脚本时,我得到以下信息:
我试图四处浏览,但我仍然不明白是什么导致了错误。从 MS connect 看来,fsi 编译器似乎存在问题,已经解决。
定义的代码片段Position
如下所示:
这里有什么问题?谢谢!
编辑一个
在我当前的设置中,我有一个 fsx 脚本LoadScript.fsx
,我在其中使用指令加载所需的 dll 文件,#r
然后使用指令打开所需的模块#open
。
LoadScript.fsx
由我编写实际计算的主要脚本调用。fsx 脚本链允许我隐藏样板代码。我只是向客户展示带有计算的主要脚本,一切看起来都更整洁。
这个脚本“链”fsx
一直在工作。直到昨天,当我从一个新.fs
文件中添加新模块时。
我正在尝试隔离产生问题的代码部分。这很难,因为error
消息没有指向特定的代码。
奇怪的是,当我直接运行时,LoadScript.fsx
一切都没有任何问题。LoadScript.fsx
当我从另一个脚本调用时,Fsi 编译失败:
这种奇怪行为的原因可能是什么?有什么提示吗?
c# - C# 类 - 在 FSI 中时的 System.MissingMethodException
我有一个奇怪的行为。
我正在尝试使用 C# 库:Neo4jClient
我在 FSI 中的代码如下所示:
并导致以下错误:
但是,如果作为 F# 应用程序执行,则相同的代码可以正常运行。
我不确定这个问题是否是特定于图书馆的。我的问题是:在 FSI 中使用 C# 库是否存在一些特定的黑客行为?
肿瘤坏死因子。
visual-studio - Visual Studio 和 F#
F# 可以在没有 Visual Studio 的情况下安装和使用。
我的问题涉及硬币的另一面。是否可以升级 F# 以保持相同版本的 Visual Studio?怎么做?
语言发展很快。F# 生态系统已经从 3.0 版向前推进到 3.1.1 版,但 Visual FSharp Tools 3.1.1 仅支持Visual Studio 2013。另一方面,我们不打算很快升级我们的 VS 2012 许可证。
理论上,Visual Studio 应该独立于在后台运行的 FSharp 工具版本。但是,IntelliSense和Fsi是如何适应的呢?
f#-interactive - 如何获取模块中定义的方法?
我正在尝试使用来自 Fsi 的 F# 程序集,但似乎无法找到一种方法来获取模块中定义的方法列表,以便我可以调用它们。
这是我正在尝试使用的示例文件。在遵循“跨语言友好的公开方法”之后,我在文件顶部添加了一个命名空间,并添加了一个模块来包含之前存在的 let 绑定方法。如果可能的话,我想避免将所有东西都移到静态类中。
我可以使用反射,或者以另一种方式编写模块来帮助我找到可用的方法和方法的正确封装吗?
.net - 相同的 F#.NET 解决方案适用于 32 位操作系统下的 FSI,但不适用于 64 位操作系统
我有一个 F#.NET 解决方案,其中一个项目在 VS 2013 中包含一些托管 C#.NET 和非托管 C++ DLL 引用。
该解决方案在 32 位 Windows 7 Enterprise 下的 FSI 中完美运行。但是,如果我将解决方案中的所有内容复制到具有 64 位 Windows 8.1 操作系统的计算机上,并保持引用的 DLL、文件等的所有相对和绝对路径相同,FSI 会给我
System.DllNotFoundException: Unable to load DLL 'dllName': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
非托管 C++ DLL 的错误命名dllName
是解决方案的一部分,被复制,存在,被引用。
dllName
在 \x64 和 \x86 文件夹下有 32 位和 64 位版本。它们都被引用,被复制并且在那里。项目属性在 32 位操作系统和 64 位操作系统上是相同的。我还尝试了 Properties -> Debug 的 Configuration 和 Platform settings 的所有可能组合,以及 Properties -> Build 在 64 位 OS 下的 Configuration、Platform 和 Platform target 设置,但无济于事。
我想以某种方式出现Fsi.exe (32-bit)
在任务管理器中的 FSI -> 64 位操作系统中的进程,但Fsi.exe
在 32 位操作系统中,是在我没有触及任何东西的情况下在 64 位环境中搞乱我的 32 位应用程序的罪魁祸首解决方案的一部分。
f#-interactive - 使用参数运行 f# 脚本
我尝试通过批处理文件使用 fsi.exe 运行 f# 脚本
我需要我的脚本程序与 arg1 arg2 和 arg3 一起运行。但是命令:
打印所有参数并说 arg1 是错误的参数,但我只需要在脚本中使用 arg1、arg2、arg3 进行操作。尽管使用参数运行 f# 脚本并使用它们进行操作的最佳方法是什么?
f# - 使用 NSubstitute 模拟 NLog4Net 并捕获传递给 log.ErrorFormat 的参数
我正在尝试将以下 C# 重写为 F#,它使用 NSubstitute 模拟 Log4Net 记录器,并将传递给 Log.ErrorFormat 调用的参数捕获到 _loggerException 字符串中。
以下是我达到的F#
但是,我在第二个参数上遇到错误SubstituteExtensions.When
-_logger.WarnFormat(Arg.Any<string>(), Arg.Any<string>())
如下:
这个表达式应该有 type
Action<ILog>
但这里有 typeunit
。
关于我做错了什么有什么想法吗?
.net - F# 交互式 GC 堆转储
我正在调查一个通过 FsiAnyCpu 运行的 F# 脚本,该脚本使用了大量内存。我使用 PerfView 拍摄了一个堆快照,看起来大多数高计数节点都植根于FSharp.Compiler!Microsoft.FSharp.Compiler.Ilxgen+IlxAssemblyGenerator
. 在拍摄快照之前,我强制执行 GC 并在此期间冻结进程。
默认独占视图显示:
这是可以预料的吗?
winforms - 带有 Windows.Forms 的 FSharpChart 在很多方面都非常慢
我使用下面示例中的代码对 F# Interactive 中的值列表进行基本绘图。绘制更多点时,显示时间会急剧增加。在下面的示例中,10^4 点在 4 秒内显示,而 4.10^4 点需要耐心测试 53 秒才能显示。总的来说,绘制 N 个点的时间大致是在 N^2 中。
结果是我可能会在这段代码前面添加一个插值层,但是
1)我想知道知道 FSharpChart 和 Windows.Forms 工作原理的人是否可以解释导致这种行为的原因?(数据是有界的,所以似乎可以排除的一件事是显示器需要调整比例。)
2)除了自己插入数据之外,还有其他简单的补救措施吗?
build - 使用 fsi --exec 运行 FAKE 时无法指定目标
我想用 fsi --exec 执行 FAKE 脚本,因为它比使用 FAKE.exe 快得多。但是,我无法理解如何指定目标。
我可以这样做:
这是我想做的(但不起作用,它将使用默认目标):
有什么提示吗?
谢谢
拉斯穆斯