c# visual-studio msbuild cruisecontrol.net

c# - Cómo se usa el archivo licenses.licx



visual-studio msbuild (3)

Tengo el archivo licenses.licx que se incluye en una de las propiedades de mis proyectos. No estoy seguro de cómo lo usan sus dlls. ¿Lo usa msbuild? ¿Tiene alguna idea de cómo se usa cuando se está construyendo la solución?


Dado que indicas que la respuesta de StellarEleven no ayuda, creo que estás buscando algo aún más simple. Probablemente esto no sea 100% correcto, pero entiendo cómo funciona esto:

El archivo licx es simplemente una lista de los componentes "licenciados" utilizados por su aplicación.

Cada línea en el archivo tiene el siguiente formato:

[Component Name], [Assembly Name]

Por ejemplo, uno de mis proyectos usa el componente IP Works NetDial con licencia, por lo que mi archivo .licx contiene la siguiente línea:

nsoftware.IPWorks.Netdial, nsoftware.IPWorks

En el contexto del archivo de proyecto (.csproj), se hace referencia al archivo .licx como EmbeddedResource. Durante el proceso de compilación, LC.exe verifica que la máquina que realiza la compilación tiene la (s) licencia (s) correspondiente (s) para el componente en cuestión y genera un archivo .licenses binario que finalmente se integra como recurso ([AssemblyName] .exe.licenses ) en el ejecutable final.

¿Esto ayuda?


Usamos una política de check-in personalizada (TFS) que anula explícitamente el contenido de esta mientras está presente en la lista de check-in.


Problemas con el archivo Licenses.licx

Archive esto bajo ASP.NET, Departamento de WTF.

Frustración Cuando desarrolla una aplicación web con nuestros controles, aparece un archivo misterioso llamado licenses.licx. No, no es un pedido usar un lollipop con un nombre extraño, sino que es un archivo de transición generado (y modificado) por Visual Studio que participa en la verificación de licencias. En modo de diseño, Visual Studio usa este archivo para tomar nota de cada control con licencia que use en su diseño. Cuando luego crea su aplicación, Visual Studio lee este archivo licenses.licx y para cada control mencionado allí, cargará el ensamblaje correspondiente y ejecutará el código de licencia en ese ensamblaje para ver si el ensamblado tiene la licencia adecuada (es decir, que el producto al que pertenece ha sido instalado correctamente en esa máquina). Si todo sale bien, Visual Studio incrusta la clave de licencia en el ejecutable. Si no lo hace, recibirá mensajes de error extraños sobre que el control no está bajo licencia (mi favorito es "No se pudo transformar el archivo de licencias ''licenses.licx'' en un recurso binario." A lo que normalmente invoco el colorido lenguaje de mi antepasados).

Licenses.licx es en realidad un archivo en su solución (si no puede verlo allí, haga clic en Mostrar todos los archivos). Visual Studio utiliza un programa llamado lc.exe para compilar las licencias en los recursos integrados en su aplicación, y cuando las cosas van mal con la compilación de la licencia, he visto mensajes de error que también hacen referencia a este ejecutable.

Aquí hay un ejemplo de una línea en un archivo licenses.licx.

DevExpress.XtraCharts.Web.WebChartControl, DevExpress.XtraCharts.v8.2.Web, Version = 8.2.4.0, Culture = neutral, PublicKeyToken = 9b171c9fd64da1d1

El primer valor en esta lista delimitada por comas es la clase, el segundo es el ensamblado donde se encuentra y los otros valores son el resto del nombre fuerte del ensamblaje. Estoy seguro de que ya puede ver los problemas, especialmente cuando actualiza una solución a las últimas versiones de los controles de terceros que utiliza. Si lo desea, puede editar este archivo y eliminar las partes de nombre seguro sin ningún problema.

Pero ese no es el mayor problema con licenses.licx. El hecho es que Visual Studio tiene la propensión de tocar este archivo si abre la solución (eso es "tocar" como cambiar la fecha del archivo a la fecha / hora actual). Esto causa estragos en las licencias, especialmente si abre la solución en una máquina sin licencia y está utilizando el control de fuente. De repente, su máquina de compilación arrojará estos mensajes de "no se puede transformar" y usted se queda preguntándose qué salió mal. Otro problema frecuente es cuando tienes un equipo de desarrolladores trabajando en una solución: todos inconscientemente están "modificando" este archivo.

Entonces, la respuesta parece ser no poner el archivo licenses.licx bajo control de fuente. (Artículo KB)

Pero esta solución al problema arroja otra señal de alerta: si uno de los desarrolladores en un equipo agrega un nuevo control que necesita licencia para el formulario, se agrega una línea a su archivo local licenses.licx y es posible que no se refleje en el control de fuente . Bam, tu máquina de construcción falla la construcción y Joe, quien agregó el control, tiene que comprar donas para el equipo hasta que alguien más rompa la construcción.

Me temo que no tengo una buena solución para este último problema, porque lamentablemente el "no poner licencias.licx en el control de la fuente" parece ser la forma en que todos solucionan el problema de la licencia. Otra solución es eliminar el archivo licenses.licx por completo y luego obtener Visual Studio para regenerarlo abriendo la solución (aunque esto es un poco difícil en una máquina de compilación).

De todos modos, espero que todo ayude de alguna manera. Y golpear su computadora portátil con un teléfono realmente no va a ayudar.