无法将C#PCL的引用添加到F#PCL(VS 2015 Update 1)

我在创建F#便携式项目时遇到问题,应该从C#便携式项目中引用。 添加此类引用时,将显示以下消息:

无法添加对’PortableLibrary1’的引用。 可移植库项目只能引用其他可移植库项目和程序集。

使用最新的Visual Studio 2015 Update 1(版本14.0.24720.00)可以轻松复制该问题。 我也安装了Xamarin。

我可以使用以下可用的任何C#便携式项目重现该问题:

  • 类库(便携式)
  • 类库(适用于iOS,Android和Windows)

以及任何类型的F#便携式库项目,具有以下可用:

  • 可移植库(.NET 4.5,Windowsapp store,Silverlight 5,Xamarin)[配置文件47]
  • 可移植库(.NET 4.5,Windowsapp store,Windows Phone 8 Silverlight,Xamarin)[配置文件78]
  • 可移植库(.NET 4.5,Windowsapp store,Windows Phone 8.1,Windows Phone Silverlight 8,Xamarin)[Profile 259]
  • 可移植库(.NET 4.5,Windowsapp store,Xamarin)[配置文件7]

我使用了与C#相同的配置文件和F#,没有任何帮助。

似乎之前已经存在这样的问题( 如何从C#可移植类库(PCL)添加对F#可移植库的引用 ),然后成功修复了该问题。 但它现在再次复制。

有人可以告诉我,我错过了什么吗? 也许还需要额外安装一些东西?

我刚才有同样的问题。 我通过黑客攻击PCL的.csproj解决了这个问题。 之后,在C#项目中引用了F#PCL,我可以使用所有内容。 我不知道是否有任何问题 – 我无法弄明白。

以下是重现的步骤:

  • 新的C#项目(便携式课程简介111)
  • 新的F#项目(便携式课程简介7)
  • 查看F#.fsproj文件并复制“Project / PropertyGroup / ProjectId”的值
  • 编辑C#.csproj并添加以下项目组

      {F# Project Id} F# Project   

我正在使用Visual Studio 2015社区和Update 2

如果确实存在错误并且您想要将C#PCL库中的某些内容调用到F#PCL库中,那么可以使用一种方法来添加C#库作为对F#库的引用(另一种方式是arround) 。

然后F#代码将实现您在C#端定义的接口(请参阅https://msdn.microsoft.com/en-us/library/dd233207.aspx )。

它还将调用您在C#端提供的方法,以便为您提供实现接口的类实例的引用(在F#端实现)。 或者,您可以使用MEF(Managed Extensibility Framework – https://blogs.msdn.microsoft.com/jomo_fisher/2010/03/09/neat-samples-extend-your-f-program-with-mef/ )来传递从F#端到C#端的接口实现,C#端启动“绑定”请求(也读取有关控制/dependency injection的反转)