我在创建F#便携式项目时遇到问题,应该从C#便携式项目中引用。添加此类引用时,将显示以下消息:
无法添加对'PortableLibrary1'的引用。可移植库项目只能引用其他可移植库项目和程序集。
使用最新的Visual Studio 2015 Update 1(版本14.0.24720.00)可以轻松复制该问题。我也安装了Xamarin。
我可以使用以下可用的任何C#便携式项目重现问题:
以及任何类型的F#可移植库项目,其中包含以下内容:
我为C#使用了与F#相同的配置文件,没有任何帮助。
似乎之前已经存在这样的问题(How do I add a reference to F# Portable Library from C# Portable Class Library (PCL))然后被成功修复。但它现在又被复制了。
有人可以告诉我,我错过了什么吗?也许还需要额外安装一些东西?
答案 0 :(得分:4)
我遇到了同样的问题。我通过黑客攻击PCL的.csproj解决了这个问题。之后,在C#项目中引用了F#PCL,我可以使用所有内容。我不知道是否有任何问题 - 我无法弄明白。
以下是重现的步骤:
编辑C#.csproj并添加以下itemgroup
<ItemGroup>
<ProjectReference Include="..\F# Project\F# Project.fsproj">
<Project>{F# Project Id}</Project>
<Name>F# Project</Name>
</ProjectReference>
</ItemGroup>
我使用Visual Studio 2015社区和Update 2
答案 1 :(得分:1)
如果确实存在错误,并且您想要将C#PCL库中的某些内容调用到F#PCL库中,那么可以使用一种方法来添加C#库作为对F#库的引用(另一种)方式arround)。
然后F#代码将实现您在C#端定义的接口(请参阅https://msdn.microsoft.com/en-us/library/dd233207.aspx)。
它还将调用您在C#端提供的方法,以便为您提供实现接口的类实例的引用(在F#端实现)。或者,您可以使用MEF(托管可扩展性框架 - https://blogs.msdn.microsoft.com/jomo_fisher/2010/03/09/neat-samples-extend-your-f-program-with-mef/)将该接口实现从F#端传递到C#端,C#端启动“绑定”请求(另请参阅关于控制的反转/依赖注入)