Nant 0.91で構成エラーを解決するにはどうすればよいですか?


106

Nant 0.91をダウンロードした後、構成またはセキュリティに関連するかなり不可解な構成エラーが発生します(以下を参照)。

私は単にNant実行可能ファイルを0.86から0.91にアップグレードしようとしています。

Windows 7マシンでビルドする場合、以下の問題をどのように解決できますか?

log4net:ERROR XmlConfiguratorAttribute:ConfigurationFileLocationの取得中に例外が発生しました。ConfigFileプロパティとConfigFileExtensionプロパティが設定されていない場合は、ConfigurationFileLocationを解決できる必要があります。System.Security.SecurityException:タイプ 'System.Security.Permissions.FileIOPermission、mscorlib、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089'の権限のリクエストに失敗しました。System.Security.CodeAccessSecurityEngine.Check(Object demand、StackCrawlMark&stackMark、Boolean isPermSet)at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap、StackCrawlMark&stackMark)at System.Security.CodeAccessPermission.Demand()at System.AppDomainSetup.VerifyDir(文字列dir、ブール値の正規化)、log4net.Util.SystemInfo.get_ConfigurationFileLocation()、log4net.Config。

失敗したアクションは次のとおりです。デマンド失敗した最初のアクセス許可の種類は次のとおりです:System.Security.Permissions.FileIOPermission失敗したアセンブリのゾーンは次のとおりです:インターネット

未処理の例外:System.Security.SecurityException:構成セクション 'nant'にアクセスしようとしたときに、ConfigurationPermissionの要求が失敗しました。すべての呼び出し元がこのセクションのデータにアクセスできるようにするには、このセクションが宣言されている構成ファイルでセクション属性 'requirePermission'を 'false'に設定します。---> System.Security.SecurityException:タイプ 'System.Configuration.ConfigurationPermission、System.Configuration、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a'の権限のリクエストに失敗しました。System.Security.CodeAccessSecurityEngine.Check(Object demand、StackCrawlMark&stackMark、Boolean isPermSet)at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap、StackCrawlMark&stackMark)at System.Security.CodeAccessPermission。

(回答は近日公開され、参照用の質問として投稿します...)


NAnt 0.92Windows 8.1でも同じ問題が発生ます。しかし、これは予想通りでした。Windows 10の別のコメントでもわかるように、追加するタグは他にありますか?
ウルフ

回答:


205

奇妙なことに、これは実行可能ファイルがNant 0.91アーカイブから抽出される方法に関連しています。(これは実際に試してみるまで意味がありませんでしたが、実際に機能します...)

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

ダウンロードしたNAnt 0.91 zipファイルに追加のセキュリティ関連の構成を実行する必要があるという点で、Windows 7のセキュリティ関連の問題であることがわかりました:解凍する前に、zipファイルを右クリックして[プロパティ]を選択し、[全般]タブでボタンをクリックしてください。 「ブロック解除」というラベルが付いた後、[プロパティ]ウィンドウで[OK]をクリックします。次に、ファイルを目的の場所に抽出し、ファイルがシステムパス上にあることを確認します。新しいコマンドラインを開くと、NAntが正常に実行されます。


1
また、ダウンロードした.zipファイルをローカルコンピューターに保存し、ブロックを解除してから解凍します。ファイルをネットワーク共有に保存し、ブロックが解除されていないかのようにWindowsがおかしくなっているときに、私はこれを試しました。#ProTip
Brett Rigby

2
誰かがこの解決策がWindows 10でも機能するのではないかと思っていた場合
Sc0tTy

2
もう1つの(翻訳)奇妙さ:ドイツ語では、ボタンにラベルが付けられていますZulassen
Wolf

12

同じ問題がありましたが、[プロパティ] / [全般]タブにブロック解除ボタンがありませんでした。(理由はわかりません。これはVMWare Fusion仮想マシン内で実行しているという事実に潜在的に関連しているようです。)

この問題は、Windowsに組み込まれているZIPエクストラクター以外のものを使用してファイルを抽出した場合には解消されたようです。たとえば、7-Zipを使用してアーカイブを抽出すると、すべてが正常に機能しました。


絶対に!しかし、ほとんどの場合7-Zipを使用して圧縮する場合でも、組み込みオプションが魅力的であるため、解凍時に正しいコンテキストメニュー項目にアクセスするのが混乱することがあります;)
Wolf

1

これは、Powershellを使用してすべてのファイルを再帰的にブロック解除する方法です。奇妙なことに、unblock-fileはパイプ上のpspathプロパティのみをチェックします。

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

もちろん、ブロックされているかどうかを知らなくても、この方法でそれを行うことができます。

get-childitem -recurse c:\nant-92 | unblock-file
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.