无法将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的反转)