无法引用F#类库

时间:2016-06-28 14:09:11

标签: f# asp.net-core

此问题与标题中描述的完全相同。

我有一个便携式F#类库。我创建了一个ASP.NET核心Web应用程序(包括.NET Framework和.NET Core),我试图在其中添加对我的F#类库的引用。

尝试添加引用会显示一条消息:

  

不支持以下项目作为参考:

     

当前项目不支持项目类型,不能(sic)引用项目类型。

这非常令人失望,因为.NET Core现在处于普遍可用性状态。

在解决此错误时是否有任何变通方法?

2 个答案:

答案 0 :(得分:4)

我有一个项目,我从.net核心的Beta8位开始,从那时起我就有了一个F#库,我在asp.net核心C#app中使用它。 (btw here是一个基于RC2的最小样本,用于从基于网络核心的控制台应用程序引用F#lib)

我是这样做的:

目前(根据​​我的知识)VS中没有模板来创建基于coreCLR的F#库(F#下的PLC模板都是基于完全框架的,但即使它运行,你仍然无法从asp.net核心引用在完整的框架上),所以你必须使用命令行执行此操作。这可以通过以下方式完成:

dotnet new --lang F#

这会为您创建一个hello world coreCLR F#app。您可以通过修改project.json文件将应用程序转换为类库。

如果您有VS解决方案并且点击“添加” - > “现有项目”可以选择project.json文件。这样就可以将它添加到您的解决方案中(顺便说一下,还会创建一个xproj文件)。

所以此时您将在解决方案中拥有基于coreCLR的F#项目。我相信通过右键单击asp.net核心项目并转到“添加” - > “参考” - >项目 - >解决方案并选择您已经可以参考的F#库。如果这不起作用,您可以手动执行:只需在asp.net核心应用程序的project.json中的“dependencies”下列出F#项目。

如果您的asp.net核心应用程序在完整框架上运行,仍需要执行这些步骤。它实际上并不重要。

现在不好的部分:

  • 在RTM(周一发布)中,由于某些依赖性问题,“dotnet new”命令会创建一个不可兼容的F#应用程序。这被跟踪here(标题显示"在macOS",但它在Windows上是相同的),一旦它解决了,这应该没问题(或者如果你还没有安装RTM,你有RC2,你也很好)。
  • 跨F#和C#进行智能感知和调试不起作用(我发布了here

答案 1 :(得分:1)

虽然.NET Core已正式发布,但ASP.NET Core Web Application中的绝大多数nuget包都在预发行版中。此外,虽然实体框架身份模型已被清理,但是当我尝试实现Entity Framework迁移时,我尝试将用户和角色的键列从字符串更改为int会产生一个模糊的错误。我知道我可以为.NET Web应用程序执行此操作,即使该过程在某些地方很笨拙。所以现在我又回到了使用.NET Framework Web应用程序。我期待看到一个完全成熟的ASP.NET核心Web应用程序版本。它没有准备好,但看起来很有希望。