使用没有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框架,都有一个模板可以帮助您。