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

时间:2016-01-16 14:43:17

标签: c# .net visual-studio xamarin f#

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

  

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

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

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

  • 班级图书馆(便携式)
  • 类库(适用于iOS,Android和Windows)

以及任何类型的F#可移植库项目,其中包含以下内容:

  • Portable Library(.NET 4.5,Windows Store,Silverlight 5,Xamarin)[Profile 47]
  • 可移植库(.NET 4.5,Windows应用商店,Windows Phone 8 Silverlight,Xamarin)[配置文件78]
  • 可移植库(.NET 4.5,Windows应用商店,Windows Phone 8.1,Windows Phone Silverlight 8,Xamarin)[Profile 259]
  • 可移植库(.NET 4.5,Windows应用商店,Xamarin)[配置文件7]

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

似乎之前已经存在这样的问题(How do I add a reference to F# Portable Library from C# Portable Class Library (PCL))然后被成功修复。但它现在又被复制了。

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

2 个答案:

答案 0 :(得分:4)

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

以下是重现的步骤:

  • 新的C#项目(便携式课程档案111)
  • 新的F#项目(便携式课程简介7)
  • 查看F#.fsproj文件并复制" Project / PropertyGroup / ProjectId"
  • 的值
  • 编辑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#端启动“绑定”请求(另请参阅关于控制的反转/依赖注入)