Como resolvo erros de configuração com Nant 0.91?

106

Depois de baixar o Nant 0.91, estou recebendo alguns erros de configuração enigmáticos relacionados à configuração ou segurança (veja abaixo).

Estou tentando simplesmente atualizar meus executáveis ​​Nant de 0,86 para 0,91.

Como posso resolver os problemas abaixo ao construir em uma máquina com Windows 7?

log4net: ERROR XmlConfiguratorAttribute: exceção ao obter ConfigurationFileLocation. Deve ser capaz de resolver ConfigurationFileLocation quando as propriedades ConfigFile e ConfigFileExtension não estão definidas. System.Security.SecurityException: Falha na solicitação de permissão do tipo 'System.Security.Permissions.FileIOPermission, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'. em System.Security.CodeAccessSecurityEngine.Check (Object demand, StackCrawlMark & ​​stackMark, Boolean isPermSet) em System.Security.CodeAccessSecurityEngine.Check (CodeAccessPermission cap, StackCrawlMark & ​​stackMarkSet) em System.Security.CodeAccessSecurityEngine.Check (CodeAccessPermission cap, StackCrawlMark & ​​stackMarkSet) em System.Security.CodeAccessPermission. String dir, Boolean normalize) em log4net.Util.SystemInfo.get_ConfigurationFileLocation () em log4net.Config.

A ação que falhou foi: Demand O tipo da primeira permissão que falhou foi: System.Security.Permissions.FileIOPermission A zona da montagem que falhou era: Internet

Exceção não tratada: System.Security.SecurityException: Falha na solicitação de ConfigurationPermission ao tentar acessar a seção de configuração 'nant'. Para permitir que todos os chamadores acessem os dados desta seção, defina o atributo de seção 'requirePermission' igual a 'false' no arquivo de configuração onde esta seção está declarada. ---> System.Security.SecurityException: Falha na solicitação de permissão do tipo 'System.Configuration.ConfigurationPermission, System.Configuration, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'. em System.Security.CodeAccessSecurityEngine.Check (Object demand, StackCrawlMark & ​​stackMark, Boolean isPermSet) em System.Security.CodeAccessSecurityEngine.Check (CodeAccessPermission cap, StackCrawlMark & ​​stackMark) em System.Security.CodeAccessPermission.

(A resposta está em breve, postando como uma pergunta para referência ...)

Peter Bernier
fonte
ainda o mesmo problema com NAnt 0.92 e Windows 8.1 . Mas isso era esperado. Como pode ser encontrado em outro comentário também para o Windows 10 - há outra tag a ser adicionada?
Wolf

Respostas:

205

Curiosamente, isso está relacionado a como os executáveis ​​são extraídos do arquivo Nant 0.91. (Isso não fazia sentido para mim até que eu realmente tentei, mas realmente funciona ...)

Fonte: http://surfjungle.blogspot.com/2011/11/tip-running-nant-091-on-windows-7.html

Descobri que o problema estava relacionado à segurança do Windows 7, pois o arquivo zip NAnt 0.91 baixado precisava de configuração adicional relacionada à segurança a ser realizada: antes de extrair, é necessário clicar com o botão direito do mouse no arquivo zip, selecionar Propriedades e, na guia Geral, clicar no botão rotulado Desbloquear e clique em OK na janela Propriedades. Agora, extraia o arquivo para o local desejado , certifique-se de que está no caminho do sistema, abra uma nova linha de comando e o NAnt deve ser executado com sucesso.

Peter Bernier
fonte
1
Além disso, salve o arquivo .zip baixado em seu computador local e, em seguida, desbloqueie-o e, em seguida, Extraia. Tentei fazer isso enquanto o arquivo era salvo em um compartilhamento de rede e o Windows pirou como se não estivesse desbloqueado. #ProTip
Brett Rigby
2
Caso alguém
esteja
2
Outra estranheza (tradução): em alemão, o botão está rotuladoZulassen
Wolf
12

Eu tive o mesmo problema, porém minha guia Propriedades / Geral não continha um botão de desbloqueio. (Não sei por que; parece que isso está potencialmente relacionado ao fato de que estou executando dentro da máquina virtual VMWare Fusion.)

Esse problema parecia desaparecer se eu usasse algo além do extrator ZIP interno do Windows para extrair o arquivo. Por exemplo, usei o 7-Zip para extrair o arquivo e tudo funcionou bem.

Mike
fonte
Absolutamente! Mas mesmo que você use principalmente 7-Zip para compactar, às vezes é confuso acertar o item de menu de contexto correto ao descompactar, porque a opção integrada é muito atraente ;)
Wolf
1

Veja como desbloquear todos os arquivos recursivamente após o fato com o PowerShell. Estranhamente, o arquivo de desbloqueio verifica apenas a propriedade pspath no tubo.

get-childitem -recurse c:\nant-92 | 
get-item -stream zone.identifier -erroraction silentlycontinue | 
foreach { $_.pspath = $_.pspath -replace ':zone.identifier'; $_ } | 
unblock-file

Claro que você poderia fazer assim, sem saber o que estava bloqueado ou não:

get-childitem -recurse c:\nant-92 | unblock-file
js2010
fonte