我有一个项目,其中包含两个F#项目和一个C#项目,我想在其中编写一些XUnit测试:
我无法将测试中的引用添加到任何一个F#库中。
当我尝试添加对FS_PL的引用时,会出现一个对话框,指出"无法添加对项目的引用' FS_PL'。便携式图书馆项目的目标' FS_PL'与当前的便携式图书馆项目的目标不同或兼容":
这很奇怪,因为我的测试和FS_PL库都配置为针对.NET 4.5& Windows 8。
所以我创建了FS_PL_Legacy并尝试添加对它的引用。这样做会给我一条非常' 的消息,说明"无法添加对项目的引用' FS_PL_Legacy'":
有谁知道我做错了什么?
使用来自a Connect issue discussing this problem的miegirl解决方法,我在C#项目中添加了以下内容:
<ItemGroup>
<!-- Manually added reference to F# projects to overcome issue discussed here:
http://stackoverflow.com/questions/23111782/how-do-i-add-a-reference-to-f-portable-library-from-c-sharp-portable-class-libr
-->
<ProjectReference Include="..\FS_PL\FS_PL.fsproj">
<Project>{2c4b1776-3d34-4534-8520-8a1e6daa0e6e}</Project>
<Name>FS_PL</Name>
</ProjectReference>
<ProjectReference Include="..\FS_PL_Legacy\FS_PL_Legacy.fsproj">
<Project>{0d7b657c-906b-4448-ae64-2153a1fa910c}</Project>
<Name>FS_PL_Legacy</Name>
</ProjectReference>
</ItemGroup>
这至少允许VS引用F#项目,但是这些项目被标记了几个警告,并且C#可移植库无法构建,因为它无法引用一个或两个F#库中的类型:(
构建输出窗口中的大多数警告表明无法引用F#库,因为它们似乎具有对框架程序集的间接依赖关系&#34; [System.Threading / System.Lync / etc ]&#34;无法在当前目标框架中解决的问题&#34;
答案 0 :(得分:6)
问,你们会被听到......
I raised this issue on Twitter与Don Syme和一些F#团队合作。他们确认这是一个问题,他们有一个解决方案正在通过发布过程。
我安装了today's Visual F# daily build,我可以确认此问题已经解决了!
感谢Don和F#团队解决这个问题 - 我现在可以将新的F#代码整合到我的主要C#代码库和&amp;测试套件...并开始使用FAR少于F#代码替换我们系统的块而不是等效的C#;)
答案 1 :(得分:2)
这个bug很旧,但仍然会发生。我在运行VS 2015社区时遇到了这个问题。我意识到这个问题是关于VS 2013的,但我不确定在哪里发布我的答案。
我有一个Xamarin Forms Xaml应用程序,我想添加一个F#PCL进行一些计算。我在C#PCL中尝试引用F#PCL时看到了警告信息:
无法添加对&#39; PortableLibrary1&#39;的引用。可移植库项目只能引用其他可移植库项目和程序集。
我尝试直接编辑csproj文件,甚至尝试升级到VS 2017 RC,但没有任何工作。
修复程序有点像黑客攻击。
答案 2 :(得分:1)
我不知道根本原因,但您可以手动编辑.csproj文件以添加对F#项目的引用。它将在解决方案资源管理器中显示一个警告,表明某些内容仍然存在问题,但它似乎在实践中有效。