Pergunta

Eu estou usando TeamCity para gerir um dos meus projetos no entanto, não parece estar funcionando bem com Nant no Windows Server 2008. O que posso fazer para corrigir isso?

Antes de instalar o 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.

DEPOIS:

[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
Foi útil?

Solução

Um par de coisas que podem causar isso.

  1. Você não tem a plena Net 2.0 SDK instalado.
  2. Está faltando algumas chaves de registro. Se você olhar no registro de dizer um Windows XP / Vista máquina e procurar o sdkInstallRoot provavelmente você vai encontrá-lo. Em seguida, basta replicar o código para o seu servidor.

No entanto, para verificar se você tem os SDKs .NET framework instalado @ menos basta ir para o C: \ windows \ Microsoft.net pasta e ir para a versão que você precisa e procurar dentro para tentar encontrar dizer o csc.exe ou programas Vbc.exe. Se você não consegue encontrá-los, então você não tem o SDK instalado, mas mais do que provável ter o tempo de execução instalado.

dar um que vá e ver se isso ajuda.

Outras dicas

  1. Ela exige .net entrada 3.5 na seção "estruturas".

  2. garante que o Sdkinstallroot da versão 3.5 na seção é a seguinte, que é a causa raiz desse problema -
    <readregistry property="sdkInstallRoot" key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools\InstallationFolder" hive="LocalMachine" failonerror="false" />

Espero que isso ajude!

Ao usar Nant com um servidor de 64 bits do Windows Server 2003 eu tive que baixar um nightly build como Nant 0,86 beta 1 tem 64 questões bits. Eu consegui-lo para trabalhar, mas eu não tenho certeza se ele vai trabalhar com o Windows Server 2008. Nant está em beta para sempre. Se você está preso a Nant tentar um nightly build se não for eu recomendo MSBuild para .NET 2+ e 64 máquinas bit.

Para mais informações confira este artigo MsBuild vs . Nant

Já corri em problemas semelhantes com NAnt. Eu sei que este não é o Melhor solução, mas é um que funciona se você precisa para o seu projeto em movimento.

Eu descobri que a instalação de um ambiente de desenvolvimento (C # Express não funcionou para mim, mas VS 2008 fez) no servidor faz com que este problema ir embora. (Sim, eu percebo isso vai contra as melhores práticas normais, mas funciona e permite que meus scripts são executados para que eu possa voltar a codificação.)

Só percebi que eu iria partilhar ninguém meter outra pessoa está em uma situação semelhante .. (isso tem funcionado para mim tanto com CruiseControl.Net e com Hudson).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top