2010-09-15 58 views
17

新手問題。我試圖運行構建服務器上的南特腳本(非常基本的腳本,沒有做任何事情),而它的失敗與錯誤Nant在構建服務器上的權限不合格

System.Security.SecurityException:請求類型的權限「System.Security .Permissions.FileIOPermission,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'失敗。

我該怎麼做才能讓它運行?

+0

提供了更多的細節:你在用什麼構建服務器?你的Nant腳本是做什麼的?可能會粘貼示例代碼。 – 2010-09-17 13:36:21

+0

看來這個問題解決了同樣的問題:http://stackoverflow.com/questions/8605122/how-do-i-resolve-configuration-errors-with-nant-0-91希望有所幫助! – 2013-02-20 12:22:59

回答

14

@TK在這裏有答案,我相信,儘管它可能不像從網絡驅動器運行nant一樣簡單。

我和@Aidan有類似的問題。事實證明,我已經將nantcontrib(v .86)程序集複製到了我的編譯系統中,使Windows 7限制了對nantcontrib程序集的訪問。爲了解決這個問題,我首先將nantcontrib zip文件複製到了我的構建虛擬機,然後用.zip的內容覆蓋了被阻止的程序集。 Windows 7發現這些文件來自本地系統(而不是來自我最初從其複製的任何不可信源),並解除了對程序集的阻止。

可能有一種更直接的方式來相信組件(例如@ TK的鏈接),但這對我很有用。

如果您再次看到此錯誤,找兩件事情:

首先,南特(V 0.91阿爾法2)做一個體面的工作報告這個錯誤到底是什麼。我看到了同樣的錯誤@Adian,具有完整的錯誤堆棧一起,最後該信息(重點煤礦):

失敗是該組件或應用程序域:NAnt.Contrib.Tasks, 版本= 0.86。 3319.0文化=中性公鑰=空導致失敗的方法是 :NAnt.Core.Task CreateChildTask(System.Xml.XmlNode)
的組件,其 失敗是所述的區域:因特網
的URL失敗的程序集爲: file:/// C:/ Program Files(x86)/ NAntBuilder 2/nantcontrib/bin/NAnt.Contrib.Tasks.dll

其次,看看有問題的程序集的屬性頁(在我的情況下,Nant.Contrib.Tasks.dll)。如果文件已從不受信任的源複製,則會在屬性部分(位於高級...下方)中看到一個「解除阻止」按鈕以及一條說明文件來自不可信來源的說明。

0

您是否在網絡共享驅動器上運行Nant腳本?

如果是這樣,那麼您可能需要配置.NET Caspol策略以允許.NET代碼在網絡共享上執行。

Using CasPol to Fully Trust a Share

此鏈接可能能夠幫助您。

25

我的錯誤消息中提到的 「Internet區域」。這可能是因爲我從SourceForge下載了壓縮的二進制文件。我拉鍊,然後解壓縮剝離區,這對我很好。

在Windows 7(或類似):

  1. 選擇的惡性文件夾
  2. 右鍵單擊所有文件,發送到>壓縮(zipped)文件夾
  3. 右鍵單擊新的zip文件,並選擇「提取所有...」
  4. 解壓縮到一個新的文件夾

解壓後的文件將不再是從「Internet區域」。如果您願意,您可以將其複製回原始目錄。

+1

完美的作品,謝謝! – Eddietec 2013-08-31 07:43:20

6

此問題是由Windows將NTFS中的文件'"Zone.Identifier"元數據設置爲「Internet」(或其他必須明確解鎖以獲取訪問權限的區域)引起的。

當您複製文件時,或者在我的情況下,從網絡驅動器上的zip文件中解壓縮時,不會導致文件安全性元數據被寫入,請在解壓之前將zip文件複製到本地文件夾,或運行Sysinternals的"streams.exe"工具來刪除該元數據。

例如,如果我在下載文件夾中的exe運行streams.exe

streams.exe *.exe 

Streams v1.56 - Enumerate alternate NTFS data streams 
Copyright (C) 1999-2007 Mark Russinovich 
Sysinternals - www.sysinternals.com 

C:\Downloads\jre-6u27-windows-x64.exe: 
    :Zone.Identifier:$DATA  26 

通常情況下,streams.exe不會顯示任何元數據信息,如果該文件的所有源自本地文件夾。如果確實看到這些元數據(作爲備用數據流存儲在NTFS中),則還應該在文件的「屬性」對話框中看到「解除阻止」按鈕。

若要批量解鎖文件,請從有問題的文件夾運行"streams.exe -s -d *.*"

+0

我在NAnt目錄中做了這個無濟於事,然後在NH源目錄中做了,並開始構建。 – 2015-09-03 16:17:40

0

當您下載NAnt時,您必須右鍵單擊zip文件(提取之前),然後屬性,然後單擊取消阻止文件。然後提取一切,它會工作。