Pregunta

Estoy usando TeamCity para administrar uno de mis proyectos, sin embargo, no parece estar funcionando bien con Nant en Windows Server 2008. ¿Qué puedo hacer para solucionar esto?

ANTES de instalar ASP.NET 2.0 Framework SDK:

[10:21:07]: BUILD FAILED
[10:21:07]: Failed to initialize the 'Microsoft .NET Framework 2.0' (net-2.0) target framework.
[10:21:07]:     Property evaluation failed.
[10:21:07]: Expression: ${path::combine(sdkInstallRoot, 'bin')}
[10:21:07]:                             ^^^^^^^^^^^^^^
[10:21:07]:         Property 'sdkInstallRoot' has not been set.

DESPUÉS:

[11:48:16]: Target framework: Microsoft .NET Framework 2.0
[11:48:16]: Target(s) specified: test 
[11:48:16]:  [property] Target framework changed to "Microsoft .NET Framework 3.5".
[11:48:16]: BUILD FAILED
[11:48:16]: INTERNAL ERROR
[11:48:16]: System.NullReferenceException: Object reference not set to an instance of an object.
[11:48:16]:    at NAnt.Core.FrameworkInfo.get_Version()
[11:48:16]:    at NAnt.Core.Project.UpdateTargetFrameworkProperties()
[11:48:16]:    at NAnt.Core.Tasks.PropertyTask.ExecuteTask()
[11:48:16]:    at NAnt.Core.Task.Execute()
[11:48:16]:    at NAnt.Core.Project.InitializeProjectDocument(XmlDocument doc)
[11:48:16]:    at NAnt.Core.Project.Execute()
[11:48:16]:    at NAnt.Core.Project.Run()
[11:48:16]: Please send bug report to nant-developers@lists.sourceforge.net.
[11:48:16]: Total time: 0.1 seconds.
[11:48:16]: Process exited with code 1
[11:48:16]: Build finished
¿Fue útil?

Solución

Un par de cosas que pueden causar esto.

  1. No tiene instalado el .NET 2.0 SDK completo.
  2. Te faltan algunas claves de registro. Si busca en el registro de una máquina Windows XP / Vista y busca el sdkInstallRoot, probablemente lo encontrará. Luego simplemente replica el código en tu servidor.

Sin embargo, para verificar que tiene instalados los sdks de .net framework @ al menos, solo vaya a la carpeta C: \ windows \ Microsoft.net y vaya a la versión que necesita y busque dentro para intentar encontrar el código csc.exe o Programas vbc.exe. Si no puede encontrarlos, entonces no tiene el SDK instalado, pero es muy probable que tenga instalado el tiempo de ejecución.

Pruébelo y vea si eso ayuda.

Otros consejos

  1. Requiere la entrada .net 3.5 en " frameworks " sección.

  2. Asegura que el Sdkinstallroot de la versión 3.5 en la sección es la siguiente, que es la causa raíz de este problema -
    <readregistry property="sdkInstallRoot" key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools\InstallationFolder" hive="LocalMachine" failonerror="false" />

¡Espero que esto ayude!

Al usar Nant con un servidor Windows Server 2003 de 64 bits, tuve que descargar una compilación nocturna ya que Nant 0.86 beta 1 tiene problemas de 64 bits. Lo hice funcionar, pero no estoy seguro de si funcionará con Windows Server 2008. Nant ha estado en beta para siempre. Si está atascado en Nant, intente una compilación nocturna, si no, recomiendo MSBuild para máquinas .Net 2+ y 64 bits.

Para obtener más información, consulte este artículo MsBuild vs Nant

Me he encontrado con problemas similares con NAnt. Sé que esta no es la solución Best , pero es una que funciona si necesita que su proyecto se mueva.

Descubrí que instalar un entorno de desarrollo (C # Express no funcionó para mí, pero VS 2008 sí) en el servidor hace que este problema desaparezca. (Sí, me doy cuenta de que esto va en contra de las mejores prácticas normales, pero funciona y permite que mis scripts se ejecuten para que pueda volver a la codificación).

Pensé que compartiría en caso de que alguien más estuviera en una situación similar ... (esto me ha funcionado tanto con CruiseControl.Net como con Hudson).

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