Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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
C# 我应该在SqlClr中运行F#吗?_C#_Sql Server_F#_Sqlclr - Fatal编程技术网

C# 我应该在SqlClr中运行F#吗?

C# 我应该在SqlClr中运行F#吗?,c#,sql-server,f#,sqlclr,C#,Sql Server,F#,Sqlclr,我需要在Sql中运行.Net代码,我正试图在F#和C#之间做出选择。 现在,我正在用F#编写越来越多的代码,如果不是太不切实际的话,我希望它是F# 是否可以强制VS2010将我的F#程序集(及其引用)部署到Sql Server,就像C#项目那样 您建议/不建议在Sql中运行F#?为什么? 编辑: 我同意语言更好,这不是问题所在。我主要想知道是否有人有在SqlClr中使用F#的经验,特别是这些工具是否可以提供一个简单的开发工作流,即在VS2010中部署 编辑2: 我正在尝试这个,手动注册是非常痛苦

我需要在Sql中运行.Net代码,我正试图在F#和C#之间做出选择。 现在,我正在用F#编写越来越多的代码,如果不是太不切实际的话,我希望它是F#

是否可以强制VS2010将我的F#程序集(及其引用)部署到Sql Server,就像C#项目那样

您建议/不建议在Sql中运行F#?为什么?

编辑: 我同意语言更好,这不是问题所在。我主要想知道是否有人有在SqlClr中使用F#的经验,特别是这些工具是否可以提供一个简单的开发工作流,即在VS2010中部署

编辑2: 我正在尝试这个,手动注册是非常痛苦的。除了
创建程序集
之外,您还必须注册每个函数、sp、聚合等。如果它们存在,您还必须先按正确的顺序删除它们,以免
删除程序集失败,因为对象“Hello”引用了“Nibbler”。

然后我有了一个想法,用一个C#项目作为前端,让这个项目引用一个F#项目,只是为了让所有这些部署自动完成。事实证明,您只能引用其他C#/VB Sql Clr项目,或者已经在Sql中引用的程序集。这仍然可以简化部署,因为所有函数的创建/删除等都将自动处理。然后,为了从测试部署到生产,我只需要从测试环境中注册的所有内容生成脚本


另外,我还尝试过摆弄.fsproj文件,与C#Clr项目的.csproj不同,以实现部署,但毫无效果。

我建议用F#编写Clr UDF/过程,原因与我建议用F#编写几乎所有内容的原因大致相同(请参阅大量的F#vs C#问题)。我想不出有什么理由更喜欢C#。我没有尝试使用VS将程序集部署到SQL Server,但是
CREATE ASSEMBLY
工作得很好…无论使用何种编程语言,其工作原理都是一样的。

如果您在SQL CLR上下文中使用FSharp.Core和其他引用时遇到问题,您可以尝试使用
--standalone
使外部引用嵌入到部署到SQL Server的程序集中。

您可以告诉我们为什么您可能对这样做持怀疑态度,以了解您的想法。除了在这种情况下的语言之外,我想不出任何其他不同的语言。部署仅与VS中的不同,但如果使用
CREATE ASSEMBLY
进行部署,则部署是相同的。还有什么?@Daniel-Re“还有什么”:我不知道。理论上不应该有其他问题。我只是好奇是否有人真的在SQL上使用了F#on。理论上,实践和理论是一样的+我同意@Maurico Use F#如果它是这项工作的最佳工具的话。我是一个狂热的F#爱好者,我只使用它,但有几种情况下你更喜欢C#。有时只是因为F#对XAML(以及类似的)的支持有限,有时是因为F#是为特定任务设计的(例如,使用C#更容易在大图像上使用指针)。我敢打赌,甚至可以在F#中轻松地使用指针(请参阅
NativePtr
模块-)@Ramon-关于F#是为特定任务而设计的,我认为这是一种瑞士军刀语言,就像今天任何可用的语言一样。在任何一种编程语言都可以声明的情况下,它似乎更不适用于F语言。值得注意的是:这些工具落后于命令式语言,但比许多功能性语言(尤其是IDE和调试器)要好。哇,我也不知道!我一直想要一个C#的链接器被接受为答案。项目的其他部分已经在F#中,在这里也使用F#是有意义的,所以我将使用F#,用--standalone.Update编译。。。我也在使用其他项目中的dll,这在使用--standalone时造成了问题。简而言之,FSharp.Core中的类型与my--standalone编译dll中的类型不同。。正因为如此,我没有使用--standalone。