c# .net visual-studio xamarin f#

No se puede agregar una referencia de C#PCL a F#PCL(VS 2015 Update 1)



.net visual-studio (2)

Tengo problemas para crear un proyecto portátil de F # que debería ser referenciado desde un proyecto portátil de C #. Al agregar dicha referencia, aparece el siguiente mensaje:

No se puede agregar una referencia a ''PortableLibrary1''. Los proyectos de la Biblioteca portátil solo pueden hacer referencia a otros proyectos y ensamblajes de la Biblioteca portátil.

El problema se reproduce fácilmente con la última actualización de Visual Studio 2015 1 (versión 14.0.24720.00). También tengo instalado Xamarin.

Puedo reproducir el problema utilizando cualquier tipo de proyecto portátil C # con los siguientes disponibles:

  • Biblioteca de clases (portátil)
  • Class Library (Portable para iOS, Android y Windows)

y con cualquier tipo de proyecto de biblioteca portátil F # con los siguientes disponibles:

  • Biblioteca portátil (.NET 4.5, Tienda Windows, Silverlight 5, Xamarin) [Perfil 47]
  • Biblioteca portátil (.NET 4.5, Tienda de Windows, Windows Phone 8 Silverlight, Xamarin) [Perfil 78]
  • Biblioteca portátil (.NET 4.5, Tienda de Windows, Windows Phone 8.1, Windows Phone Silverlight 8, Xamarin) [Perfil 259]
  • Biblioteca portátil (.NET 4.5, Tienda Windows, Xamarin) [Perfil 7]

He usado los mismos perfiles para C # que para F # y nada ayuda.

Parece que ya hubo un problema de este tipo antes ( ¿Cómo agrego una referencia a F # Portable Library desde C # Portable Class Library (PCL) ) que luego se solucionó con éxito? Pero ahora se reproduce de nuevo.

¿Puede alguien decirme que me estoy perdiendo algo? Tal vez hay algo que necesita ser instalado adicionalmente o algo así?


Acabo de tener el mismo problema. Lo solucioné con hackear el .csproj de mi PCL. Después de eso, se hace referencia a F # PCL en el proyecto C # y puedo usar todo. No sé si hay algún problema, no pude resolverlo.

Aquí están los pasos para reproducir:

  • Nuevo proyecto C # (perfil de clase portátil 111)
  • Nuevo proyecto F # (perfil de clase portátil 7)
  • busque en el archivo F # .fsproj y copie el valor de "Project / PropertyGroup / ProjectId"
  • edite C # .csproj y agregue el siguiente grupo de elementos

    <ItemGroup> <ProjectReference Include="../F# Project/F# Project.fsproj"> <Project>{F# Project Id}</Project> <Name>F# Project</Name> </ProjectReference> </ItemGroup>

Estoy usando la comunidad de Visual Studio 2015 con la Actualización 2


Si de hecho hay un error y desea llamar algo de la biblioteca PCL de C # a la PCL de F #, una forma de trabajar alrededor podría ser agregar la biblioteca C # como referencia a la biblioteca de F # en su lugar (al revés) .

Luego, el código F # implementará una interfaz (consulte https://msdn.microsoft.com/en-us/library/dd233207.aspx ) que defina en el lado C #.

También llamará a un método que proporcione en el lado C # para darle una referencia de una instancia de clase que implementa la interfaz (que se implementa en el lado F #). Alternativamente, puede usar MEF (Managed Extensibility Framework - https://blogs.msdn.microsoft.com/jomo_fisher/2010/03/09/neat-samples-extend-your-f-program-with-mef/ ) para pasar eso implementación de la interfaz desde el lado F # al lado C #, con el lado C # iniciando la solicitud del "enlace" (también lea sobre Inversión de control / Inyección de dependencia)