Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用没有F#项目结构的包_F#_Package - Fatal编程技术网

使用没有F#项目结构的包

使用没有F#项目结构的包,f#,package,F#,Package,有没有办法在我的系统中安装一个软件包,让任何.fs文件都可以引用它? 是否可以在不遵循项目结构的情况下使用F#包? 我见过的所有FSharp使用外部软件包要么使用NuGet(对于适当的大型项目),要么引用下载的dll(对于F#.fsx脚本) 我希望利用编译器生成一个可执行文件 我的用例如下: 我有一个非常简单的命令行脚本,它不能证明拥有一个包含大量项目、paket和配置文件的复杂项目结构是合理的。我真正需要的就是编译一个FSharp文件并生成一个.exe 现在,这个脚本需要执行一些HTTP请求,

有没有办法在我的系统中安装一个软件包,让任何
.fs
文件都可以引用它? 是否可以在不遵循项目结构的情况下使用F#包? 我见过的所有FSharp使用外部软件包要么使用NuGet(对于适当的大型项目),要么引用下载的dll(对于F#
.fsx
脚本)

我希望利用编译器生成一个可执行文件

我的用例如下:

我有一个非常简单的命令行脚本,它不能证明拥有一个包含大量项目、paket和配置文件的复杂项目结构是合理的。我真正需要的就是编译一个FSharp文件并生成一个
.exe


现在,这个脚本需要执行一些HTTP请求,检索JSON响应,并转换数据-我相信FSharp.data是完成这项工作的完美工具,但我一直无法找到如何将其与我的问题结合起来。

在这一语言建议得到实施之前,我认为没有一种受支持的方法可以准确地满足您的需要

如果您只需要FSharp.Data,而不太关心编辑器工具和库版本控制,那么您可以手动下载.dll,从您的文件中使用(我们称之为
app.fs
),然后安装F#工具,您可以使用类似
fsc.exe-r:-o app.exe--standalone--target:exe app.fs
(我没有尝试过这组特定选项,但您可以检查)


不过,项目系统并没有那么复杂和沉重,特别是如果您可以将.NET Core SDK与其命令行界面结合使用的话

如果运行
dotnet new console-lang=F#
,则完整的项目文件如下所示

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="Program.fs" />
  </ItemGroup>

</Project>

Exe
netcoreapp2.2

根据您的工具,您只需将
添加到
中,然后在
dotnet发布后,您就可以准备好应用程序了。

我认为,在实现此语言建议之前,没有一种受支持的方法可以准确地满足您的需求

如果您只需要FSharp.Data,而不太关心编辑器工具和库版本控制,那么您可以手动下载.dll,从您的文件中使用(我们称之为
app.fs
),然后安装F#工具,您可以使用类似
fsc.exe-r:-o app.exe--standalone--target:exe app.fs
(我没有尝试过这组特定选项,但您可以检查)


不过,项目系统并没有那么复杂和沉重,特别是如果您可以将.NET Core SDK与其命令行界面结合使用的话

如果运行
dotnet new console-lang=F#
,则完整的项目文件如下所示

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="Program.fs" />
  </ItemGroup>

</Project>

Exe
netcoreapp2.2

根据您的工具,您只需将
添加到
中,然后在
dotnet发布后,您就可以准备好应用程序了。

您始终可以直接调用编译器来生成可执行文件:

Fsc.exe
"..\projects\modules\src\Calculate primes.fs"
-o:"..\projects\modules\bin\Calculate primes.exe"
--debug:full
--define:DEBUG
--define:TRACE
--target:winexe
-g
--warn:3
--warnaserror:76
--vserrors
--utf8output
--fullpaths
--flaterrors
--subsystemversion:6.00
--highentropyva+
--optimize-
--tailcalls-
-I:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1"
-I:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades"
创建一个批处理文件并将其全部放在一行中。 按如下方式添加所需的库:

-r:"..\packages\FSharp.Data\lib\net45\FSharp.Data.dll"

编译完成后,您可能需要复制与可执行文件在同一目录中使用的所有DLL,这有助于创建
.exe.config
文件。

您始终可以直接调用编译器来生成可执行文件:

Fsc.exe
"..\projects\modules\src\Calculate primes.fs"
-o:"..\projects\modules\bin\Calculate primes.exe"
--debug:full
--define:DEBUG
--define:TRACE
--target:winexe
-g
--warn:3
--warnaserror:76
--vserrors
--utf8output
--fullpaths
--flaterrors
--subsystemversion:6.00
--highentropyva+
--optimize-
--tailcalls-
-I:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1"
-I:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades"
创建一个批处理文件并将其全部放在一行中。 按如下方式添加所需的库:

-r:"..\packages\FSharp.Data\lib\net45\FSharp.Data.dll"

编译后,您可能需要复制与可执行文件在同一目录中使用的所有DLL,并且有一个
.exe.config
文件会有所帮助。

在.Net核心SDK中,您可以使用:运行
dotnet new-i MiniScaffold
,然后运行
dotnet new mini scaffold-lang F#-n MyProject-ou控制台
。然后您就已经为您设置了一个完整的项目,您只需将FSharp.Data添加到
paket.dependencidentials
,然后重新运行
paket install
,然后运行
>./build.sh
build.cmd
。如果你没有.Net核心,那么你可以类似地克隆、编辑
paket.dependencies
、运行
paket安装
然后
/build.sh
build.cmd
。无论是.Net核心还是.Net框架,都有一个模板可以帮助你。我支持以下建议:ect系统在实践中并没有那么重,特别是因为有一些模板可以克隆,只需调整一些东西。例如,如果你有.Net核心SDK,你可以使用:运行
dotnet new-i miniscafold
,然后运行
dotnet new mini scaffold-lang F#-n MyProject-ou控制台
,这样你就有了一个完整的e project已经为您设置好了,您只需将FSharp.Data添加到
paket.dependencies
并重新运行
paket install
,然后运行
/build.sh
build.cmd
。如果您没有.Net内核,则可以类似地克隆、编辑
paket.dependencidencies
、运行
paket install
,然后运行
。/build.sh
build.cmd
。无论是.Net核心还是.Net框架,都有一个模板可以帮助您。