У меня есть проект, который содержит два проекта F # и проект С#, в котором я хотел бы написать некоторые тесты XUnit:
- FS_PL: F # 3.1 (3.3.1.0) Portable Library
- FS_PL_Legacy: F # 31. (2.3.5.1) Portable Library (Legacy)
- Тесты: С#.NET 4.5/Win8 С# Portable Class Library (PCL)
Я не могу добавить ссылку из тестов в любую из библиотек F #.
Когда я пытаюсь добавить ссылку на FS_PL, мне предоставляется диалоговое окно, в котором говорится: "Невозможно добавить ссылку на проект" FS_PL ". Цели проекта" FS_PL "Portable Library не совпадают или совместимы с цели текущего проекта Portable Library":
Это нечетно, поскольку и мои тесты, и библиотеки FS_PL настроены для установки на .NET 4.5 и Windows 8.
Итак, я создал FS_PL_Legacy и попытался добавить ссылку на него. Это дает мне очень "полезное" сообщение с сообщением "Невозможно добавить ссылку на проект" FS_PL_Legacy ":
Кто-нибудь знает, что я делаю неправильно?
Частичное обходное решение # 1
Использование обходного пути miegirl от проблема подключения, обсуждающая эту проблему, я добавил в проект С# следующее:
<ItemGroup>
<!-- Manually added reference to F# projects to overcome issue discussed here:
http://stackoverflow.com/info/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 #, но эти проекты отмечены несколькими предупреждениями, а переносная библиотека С# не может построить, поскольку не может ссылаться на типы в одной или обеих библиотеках F #: (
Большинство предупреждений в окне вывода сборки указывают, что на библиотеки F # нельзя ссылаться, поскольку они, как представляется, имеют "косвенную зависимость от сборки фреймов" [System.Threading/System.Lync/etc.] ", которая не может быть разрешенными в рамках текущей целевой структуры"