c# - * archivo.dll.licenses en el directorio obj no creado con msbuild en TeamCity
asp.net-mvc visual-studio-2015 (7)
Después de buscar un poco más en Google, me encontré con este hilo en MSDN .
La solución sugerida aquí es instalar el Windows 10 SDK . Hicimos esto en nuestro servidor de compilación TeamCity que ejecuta Windows Server 2012 R2 utilizando las opciones de instalación predeterminadas, y después de reiniciar, nuestra compilación funcionaba nuevamente.
Espero que esto ayude :)
Estoy trabajando en la actualización de nuestros proyectos TeamCity de VS2012 a VS2015 y me estoy encontrando con un problema para compilar nuestra aplicación MVC.
El antiguo MSBuild (v4.0.30319.34209) genera un archivo en el directorio obj llamado MyApplication.Web.Mvc.dll.licenses
que aparentemente es necesario para compilar, pero no tenemos idea para qué se utiliza realmente el archivo.
El nuevo MSBuild (v14.0.23107.0) no crea este archivo MyApplication.Web.Mvc.dll.licenses
, por lo que la compilación falla con el siguiente error:
CSC error CS1566: Error reading resource ''MyApplication.Web.Mvc.dll.licenses''
-- ''Could not find file ''C:/BuildAgent/work/58ddf5f1234d8c8a/application/MyApplication/MyApplication.Web.Mvc/obj/Release/MyApplication.Web.Mvc.dll.licenses''.''
He estado ejecutando las construcciones manualmente a través de cmd en la máquina, y el archivo dll.licenses
se crea cada vez que se ejecuta la compilación utilizando el viejo msbuild, simplemente no el nuevo.
El archivo se crea en los equipos de desarrollo que ejecutan VS2015, pero no en el servidor de compilación de Teamcity. ¿Entonces me parece que algo más está desactualizado?
En mi caso, TFS estaba usando el compilador de licencia lc.exe
de la carpeta SDK anterior
C:/Program Files (x86)/Microsoft SDKs/Windows/v8.0A/bin/NETFX 4.0 Tools/lc.exe
en lugar de
C:/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.6 Tools/x64/LC.exe
Este problema se resolvió agregando el siguiente argumento msbuild a la definición de compilación:
/p:FrameworkOverride="C:/Program Files (x86)/Reference Assemblies/Microsoft/Framework/.NETFramework/v4.6.2"
También puede deshacerse de estos problemas y hacer su vida más fácil instalando Visual Studio en el servidor de compilación y agregando un paso de compilación de estudio visual para reemplazar su paso de msbuild 2015.
Esta es una situación estrechamente relacionada pero ligeramente diferente en que estoy usando Jenkins para controlar la compilación ...
Tuve que hacer varios cambios.
- Se instaló Windows 10 SDK en el servidor de compilación. En mi caso, la instalación del SDK "reveló" el error subyacente que es que MSBuild no estaba generando el archivo * .dll.licenses.
- Agregué /tv:14.0 (/ToolsVersion:14.0) a mis parámetros de compilación.
/ p: Configuration = Release /p:VisualStudioVersion=14.0 /tv:14.0 / verbosity: Normal
- Creó el archivo de licencia manualmente como un paso anterior a la ejecución del paso MSBuild. El siguiente comando crea el archivo "myproject.dll.licenses".
cd "C: / Archivos de programa (x86) / Microsoft SDKs / Windows / v10.0A / bin / NETFX 4.6.2 Tools"
. / lc.exe /target:MyProject.dll / complist: "C: / Archivos de programa (x86) / Jenkins / jobs / MyProject / workspace / MyProject / licenses.licx" / i: "C: / Program Files / nsoftware / E-Payment Integrator V6 .NET Edition / lib / nsoftware.InPayWeb.dll "/ outdir:" C: / Archivos de programa (x86) / Jenkins / jobs / MyProject / workspace / MyProject / obj / Release "
Estoy utilizando Atlassian Bamboo como nuestro servidor de compilación pero, por lo demás, tenía exactamente el mismo problema descrito aquí. Probé todas las soluciones en este hilo, pero no conseguí que nada funcionara. Al final, utilicé la nueva versión de MSBuild que viene con Visual Studio 2017 y de repente mi licencia dll se creó correctamente. En mi caso, el MSBuild.exe se puede encontrar en:
C: / Archivos de programa (x86) / Microsoft Visual Studio / 2017 / BuildTools / MSBuild / 15.0 / Bin / MSBuild.exe
La respuesta "Instalar el SDK de Windows 10" es correcta, básicamente. Pero hay una trampa adicional: hay más de una versión existente de este SDK: https://developer.microsoft.com/en-us/windows/downloads/sdk-archive
Al escribir este comentario:
- Julio de 2015 (Versión 10.0.26624.0) contiene .NET Framework 4.6 SDK
- Noviembre de 2015 (Versión 10.0.10586.212) contiene .NET Framework 4.6.1 SDK
- Ago. 2016 (Versión 10.0.14393.0) contiene .NET Framework 4.6.2 SDK
Verifique su salida de VS 2015 y qué versión de LC.exe se llama. Luego instale el SDK apropiado en el servidor de compilación. No olvides instalar Microsoft Build Tools 2015 también.
Nota: Mi versión está orientada a .NET 4.5, pero arriba es necesaria para construir en TeamCity con las herramientas de 2015.
Podría ser útil para alguien:
Después de instalar Windows 10 SDK y reiniciar mi servidor, he agregado /p:VisualStudioVersion=14.0 /p:TargetFrameworkVersion=v4.5.2
a mi msbuild.exe. Eso lo resolvió en mi caso.
Tuvimos el mismo problema al compilar con VisualBuild. Encontré una solución sin instalar el SDK de Win10:
En las propiedades de los proyectos, Configuración de compilación agregamos una "Línea de comando de evento de precompilación" como esta:
pushd "%VS120COMNTOOLS%../../VC"
call vcvarsall.bat
popd
pushd $(ProjectDir)/"My Project"
lc /target:$(TargetFileName) /complist:licenses.licx /outdir:"../obj/$(ConfigurationName)"
popd
popd
Este comando utiliza las herramientas (anteriores) VS12 e inicia manualmente la herramienta del compilador lc antes de la compilación del proyecto y compila el archivo licenses.licx en el archivo de recursos * .licenses