我已經在一臺特定的PC上使用NuGet一段時間了。現在,我在VS2010中創建了一個新項目(如果重要的話,這是一個使用單頁面應用程序模板的MVC 4 Beta項目)。當我選擇爲什麼Visual Studio中的項目的ExecutionPolicy行爲有所不同?
工具/庫軟件包管理器/包管理器控制檯
控制檯窗口打開,但顯示錯誤:
File C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft Corporation\NuGet Package Manager\1.7.30402.9028\Modules\NuGet\profile.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see "get-help about_signing" for more details.
然而,其他項目仍可以打開和使用程序包管理器控制檯。
在每種情況下,VS2010都以同一用戶身份運行。
如果我打開一個命令提示符(使用在其VS2010運行相同的帳戶),開始的PowerShell,並輸入命令
Get-ExecutionPolicy
PowerShell會返回根據
Restricted
我的理解Scott Hanselman blog是如果ExecutionPolicy受限制,腳本不應該運行。
爲什麼現有項目能夠使用軟件包管理器控制檯,而新軟件包不是?
更新:在ExecutionPolicy更改到的AllSigned 和重啓VS2010解決眼前的問題,但我的主要問題是,爲什麼其他項目能夠繞過既定ExecutionPolicy。 VS2010是而不是以管理員身份運行。
NuGet程序包管理器控制檯將PowerShell的執行策略設置爲RemoteSigned,並將作用域設置爲Process,因此它隻影響Visual Studio。更改Visual Studio的策略不需要Visual Studio以管理員身份運行。您從命令行看到的執行策略不需要更改。在我的機器上,這個設置爲Restricted。然而這些都不能解釋爲什麼你的新項目會顯示這個錯誤,而現有的項目不會。 –
如果非管理用戶無論如何都可以基於每個進程更改策略,那麼在機器範圍內設置策略有什麼用處? –
組策略設置可以防止您覆蓋當前進程的設置,但本地計算機設置不會。請參閱以下msdn帖子中的執行策略優先級部分 - http://technet.microsoft.com/en-us/library/dd347641.aspx –