Pregunta

Tengo un proyecto de C # Visual Studio (.csproj) que tiene una referencia a la versión Framework64 de System.Data . Cuando intento construir usando MSBuild / Team Foundation Server (TFS) en otra máquina, falla ya que la DLL de 64 bits no existe.

¿Debería vincularme a la versión Framework, o esto me limitará cuando se ejecute en máquinas de 64 bits? ¿Redirige .NET el enlace para usar 64 bits cuando sea posible?

¿Fue útil?

Solución

Creo que te refieres a Cualquier CPU en tu pregunta, ¿correcto? Suponiendo que ese sea el caso, la unión sin tener en cuenta la bitness es el camino a seguir en casi todas las circunstancias.

Recuerde que el código .NET es JITed (compilado Just In Time) - que significa código de 32 bits y 64 bits de un C # o El compilador VB.NET es el mismo, independientemente de la arquitectura que planee ejecutar. Cuando el código se JIT en tiempo de ejecución, es cuando se convierte en 32 o 64 bits.

En algunas situaciones, debe tener en cuenta la arquitectura de destino. Un caso específico sería cualquier referencia / dependencia en COM -wrapper DLLs, .NET Framework suministrado o de otra manera. Esto es porque estos archivos DLL se marcarán (en el caso de COM) como solo 32 bits (como COM es solo arquitectura de 32 bits) si no se marcaron como 32 bits, la interoperabilidad a COM no funcionaría. Por lo tanto, dado que están explícitamente marcados, los resultados de su proyecto también deberían estarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top