es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué Visual Studio no compila mi archivo C# en un archivo DLL?

Tengo un proyecto antiguo de Unity donde construí un par de (c#) scripts de editor en una dll hace años.
Todavía estoy usando mucho la dll, pero ahora hice algunos cambios en los scripts originales y quiero compilarlos en una dll nuevamente.

No sé mucho sobre las dll y la compilación y cosas así, pero por suerte escribí exactamente lo que tenía que hacer para compilarlo en una dll, que son las siguientes líneas que ingreso en el símbolo del sistema de Visual Studio 2010:
csc /target:library /out:MyDLL.DLL /reference:”C:\Program Files (x86)\Unity_3.5.1f2\Editor\Data\Managed\UnityEngine.dll” MyEditorScript.cs

Sin embargo, cuando lo hago, obtengo el error: “error CS0246: No se pudo encontrar el nombre de tipo o espacio de nombres `UnityEditor’. ¿Falta una directiva de uso o una referencia de ensamblado?”

Estoy usando la misma versión (antigua) de Unity que usé en ese entonces, así como el mismo Visual Studio (de hecho, tengo y uso nuevas versiones de ambos Visual Studio y Unity, aquí parecía más seguro quedarse con lo que funcionó antes), así que realmente no entiendo por qué ya no funciona.
Quiero decir, entiendo que necesita la dll de UnityEditor, pero ¿cómo funcionó antes?

Hay una UnityEditor.dll en el mismo lugar que la UnityEngine.dll que hago referencia en el símbolo del sistema, pero cuando intento agregar eso (así: csc /target:library /out:MyDLL.DLL /reference:”C:\Program Files (x86)\Unity_3.5.1f2\Editor\Data\Managed\UnityEngine.dll” “C:\Program Files (x86)\Unity_3.5.1f2\Editor\Data\Managed\UnityEditor.dll” MyEditorScript.cs), se queja de que la dll es un binario por alguna razón.

¿Alguien sabe cómo arreglar esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con el hecho de que el compilador no puede encontrar el espacio de nombres UnityEditor. El espacio de nombres UnityEditor solo está disponible dentro del editor de Unity y no en una aplicación independiente o biblioteca. Por lo tanto, cuando intentas compilar tu código en un DLL usando el comando csc, el compilador no puede encontrar el espacio de nombres UnityEditor.

    Una forma de solucionar este problema es crear un nuevo proyecto de Unity y mover todos los scripts relevantes desde tu proyecto antiguo al nuevo. Luego, puedes abrir el nuevo proyecto en el editor de Unity y compilar los scripts desde allí. Esto asegurará que el espacio de nombres UnityEditor esté disponible y que puedas compilar tus scripts en un DLL con éxito.

    Otra opción es usar una herramienta como UnityBuild, que te permite construir tu proyecto de Unity desde la línea de comandos, incluyendo la capacidad de construir DLL. Esta herramienta debería poder manejar el espacio de nombres UnityEditor correctamente y permitirte compilar tus scripts en un DLL sin ningún problema.

    En general, la clave para solucionar este problema es asegurarse de que el espacio de nombres UnityEditor esté disponible al compilar tus scripts en un DLL. Ya sea usando el editor de Unity o una herramienta de terceros, este es un paso crítico para asegurar que tu código se compile correctamente.

Comments are closed.