c# - descargar - visual studio gratis
Extensión nativa.net para node.js (3)
Quiero hacer uso de .net dlls en node.js. ¿Eso significa que necesito hacer que esas dlls estén disponibles con c / c ++ usando ''clr hosting'', a la
Desafortunadamente, el ejemplo de Creación de una extensión .Net nativa de nodejs en github fue un poco decepcionante, simplemente desplácese hacia abajo hasta el último paso
Cambie la opción "Compatibilidad con Common Language Runtime Support" a Sin compatibilidad con Common Language RunTime
y sabes a lo que me refiero. Corrección para hacer justicia a ese artículo: sugiere cambiar esa opción a "No hay soporte de Common Language RunTime" solo para el archivo SharpAddon.cpp
, por lo que otros archivos .cpp que agregue tendrán habilitada la compatibilidad con CLR (el valor predeterminado para un proyecto CLR) , lo que significa que de hecho puedes usar archivos .net de esos otros archivos .cpp.
Esta pregunta es en realidad un duplicado de Uso de una DLL .NET en Node.js / serverside javascript , que se escribió en un momento en que ni siquiera existía un puerto de nodo nativo de Windows, por lo que los tiempos podrían haber cambiado, aunque Google me lo pone en duda. .
En estos días, hay cmake-js y node-addon-api que facilitan las cosas, más el ABI de node-addon-api significa que el módulo no necesita ser recompilado cuando se usa con una versión más nueva de Node.js.
Consulte esta respuesta para ver un breve tutorial: https://.com/a/54339042/709537
Suena como edge.js es la nueva respuesta del autor de iisnode:
Edge.js admite el uso de C # y .NET en lugar de escribir extensiones nativas de node.js
Actualización : node-gyp puede realizar los pasos manuales a continuación automáticamente cuando el archivo binding.gyp
se configura correctamente. Vea esta respuesta para este procedimiento simplificado.
Resultó ser bastante fácil. Después de luchar con CLR hosting y obtener datos dentro y fuera del host por un tiempo, resulta que realmente puede habilitar / clr para su extensión de nodo sin ningún problema (hasta ahora). Así es cómo:
- siga las instrucciones en http://nodejs.org/api/addons.html para generar los archivos del proyecto
- abra el .sln generado en Visual Studio (estoy en VS 2010) y habilite / clr en la configuración del proyecto
- ahora probablemente no se compile y debe dejar que los mensajes de error, en este caso son bastante útiles, le guíen hacia los indicadores que entran en conflicto con / clr
Las banderas que tuve que cambiar para que funcione:
- deshabilitar / EHsc (excepciones C ++)
- deshabilitar / RTC1 y / RTCsu
- Lanzamiento: cambio / MT a / MD
- Depurar: cambiar / MTd a / MDd
- Lanzamiento: cambio / GR- a / GR
Luego puede mezclar código administrado y no administrado de esta manera, haciendo referencia a sus archivos .net.
#pragma managed
#using <managed.dll>
void callManaged()
{
managed::Class1^ c1 = gcnew managed::Class1();
System::String^ result = c1->Echo("hola");
System::Console::WriteLine("It works: " + result);
}
#pragma unmanaged
Handle<Value> Method(const Arguments& args) {
HandleScope scope;
callManaged();
return scope.Close(String::New("world"));
}
Actualización. Acabo de descubrir este enlace con una guía sencilla: http://joseoncode.com/2012/04/10/writing-your-first-native-module-for-node-dot-js-on-windows/