Quiero programar algo en C# y F #. Tengo clases parciales y me gustaría definir los métodos F # en algunos de ellos. Me sale el problema de que una clase parcial no puede ser distribuida en 2 DLL. ¿Hay alguna forma de fusionarlos? Prefiero una solución gratuita y la capacidad de hacerlo automáticamente en una compilación normal.¿Combinar varios archivos binarios .NET juntos?
Respuesta
Ya he recibido una solicitud como esta, por lo que parece que a más personas les gustaría hacer esto. Sin embargo, como ya se dijo, esto no es posible. Puede usar ILMerge para fusionar varios ensamblajes (con distintas clases), pero no es posible escribir diferentes partes de una clase en un idioma diferente. La única respuesta que puede obtener es que tendrá que estructurar su código de manera diferente. Hay varias opciones:
- Declare una # módulo F con funciones que contian las partes que desea hacer en F #
- Declarar tipos con miembros en F # y luego utilizar estas clases de C#
- declarar una clase de base en C# (o F #) y crea una clase heredada que agrega el resto de la funcionalidad en el otro idioma.
En cualquier caso, tendrá que desacoplar la funcionalidad de alguna manera (que es un requisito técnico y creo que también ayudará a que su código sea más legible).
para demostrar por qué las clases parciales a través de múltiples asambleas no pueden trabajar:
// C# part
partial class Foo {
private int csharpField;
int Bar() { return FSharpMethod(); }
}
// F# part
type Foo =
member x.FSharpMethod() = x.csharpField
En este ejemplo, C# no se puede compilar el código, ya que no sabe si existe FSharpMethod
y cuál es su tipo. El compilador de F # tampoco puede compilar el código, porque no sabe cuál es el tipo de csharpField
(y si existe).
Por supuesto, esto es solo un ejemplo de un problema técnico, pero habría muchos de ellos - fácilmente se pueden imaginar muchos otros problemas que surgirían si quisieran apoyar esto (y parece que los dos compiladores lo harían necesita estar al tanto de las partes internas de la otra parte).
No puede escribir partes diferentes de una clase en diferentes idiomas.
¿Qué estás tratando de hacer?
Puede exponer los métodos en una biblioteca F # separada y llamarlos desde la clase en C#.
Puede usar ILMerge para combinar los dos ensamblajes.
Antes de invalidar esto, tenga en cuenta que ILMerge no ayudará en absoluto. – SLaks
Tengo una clase BasicUser con conexiones de bases de datos y otras cosas buenas como useridFromName VerifiedUser (y admin). Me gustaría tener algunas funciones en F # que usan muchas de esas funciones (normalmente son parte de la clase parcial) y me gustaría ser métodos de escritura en F #, a menos que sea demasiado complicado para mí y lo haré en C# y perder poco tiempo de desarrollo. –
¿No funciona con ildasm-> merge-> ilasm? – Vlad
- 1. Herramientas para combinar varios archivos xsd
- 2. ¿Es posible combinar dos archivos de traducción de .po juntos?
- 3. Combinar 2 videos juntos como FaceTime
- 4. ¿Pueden trabajar juntos varios índices?
- 5. ¿Cómo encadenar varios TextReaders juntos?
- 6. git rebase fatal en varios archivos binarios 0.5GB
- 7. ¿Cómo puedo agregar varios informes juntos?
- 8. IN r, cómo combinar el resumen juntos
- 9. Combinar archivos de diseño para varios números de versión
- 10. Combinar y clasificar varios archivos XML con XSL
- 11. Combinar archivos PDF C#
- 12. descarga varios archivos como zip en .net
- 13. Combinar varios videos en un
- 14. ¿Cómo combinar varias configuraciones de ejecución en Intellij juntos?
- 15. ¿Cómo combinar varios ensambles en uno?
- 16. Fusionando varios archivos javascript
- 17. Combinar Javadoc para varios módulos en una sola colección
- 18. gitignore sin archivos binarios
- 19. StringIO con archivos binarios?
- 20. lectura C archivos binarios
- 21. escribiendo en archivos binarios
- 22. ¿Entradas de varios archivos?
- 23. Combinar archivos RTF
- 24. Combinar 2 archivos GetText
- 25. Minificar/combinar archivos JS
- 26. Error de Git "No se pueden combinar los archivos binarios" en la integración continua compilación
- 27. ¿Podemos combinar dos estilos de fuente juntos en Java?
- 28. combinar varios diccionarios en un solo diccionario
- 29. Uso de IPC para combinar varios idiomas
- 30. Descargar archivos binarios con problemas de archivos
comentarios hechos en Henk Holterman tienen razones adicionales por las cuales esto no funcionará. –