我有一个F#脚本,可以导入一系列库,包括SQLProvider和其他两个类型提供程序。当我在Visual Studio 2017 F#交互式窗口中运行脚本时,一切正常。 但是,当我尝试从交互式命令行而不是在Visual Studio中运行相同的脚本时,出现意外警告和异常,如下所示:
针对包含自定义类型提供程序的两个DLL报告了两个警告,而故障似乎是SQLProvider构造函数出现问题。 同样,如果我在Visual Studio(F#交互式窗口)中运行脚本,则不会发生任何事情
我正在使用Windows 10。
有什么想法吗?
编辑
结果表明,行为上的差异是由于所使用的fsi.exe不同所致:
当我在Visual Studio中运行fsi时,正在运行的fsi.exe是Visual Studio特定版本(在“ C:\ Program Files(x86)\ Microsoft Visual Studio \ Preview \ Community \ Common7 \ IDE \ CommonExtensions \ Microsoft \ FSharp”)。
相反,F#标准交互式程序是计算机PATH中的一个,它位于“ C:\ Program Files(x86)\ Microsoft SDKs \ F#\ 4.1 \ Framework \ v4.0”中。
实际上,如果我重写PATH以指向Visual Studio版本,那么即使在Visual Studio之外,一切也进行得很好。
这很烦人,因为我不能简单地将我在Visual Studio中测试的DLL分发到仅F#机器上。 例如,我的一位客户使用VS代码并且无法运行它,因此我需要强迫他安装Visual Studio,或者需要在Visual Studio之外重构我的应用程序。 这里应该有更多的统一性。
有其他方法吗?