3

我在项目中使用Visual Web Developer Express 2010,Windows XP和使用ASP.NET MVC4 RC。我已经安装了NuGet v2.0.30619.9119。安装MvcScaffolding包时NuGet执行策略错误

我现在试图通过NuGet程序包管理器控制台安装MvcScaffolding软件包。我收到以下错误:

PM> Install-Package MvcScaffolding 
Attempting to resolve dependency 'T4Scaffolding'. 
Attempting to resolve dependency 'EntityFramework (≥ 4.1.10311.0)'. 
You are downloading EntityFramework from Microsoft, the license agreement to which is available at http://go.microsoft.com/fwlink/?LinkId=224682. Check the package for additional dependencies, which may come with their own license agreement(s). Your use of the package and dependencies constitutes your acceptance of their license agreements. If you do not accept the license agreement(s), then delete the relevant components from your device. 
Successfully installed 'EntityFramework 4.1.10715.0'. 
Successfully installed 'T4Scaffolding 1.0.6'. 
File Y:\asp\packages\T4Scaffolding.1.0.6\tools\init.ps1 cannot be loaded. The file Y:\asp\packages\T4Scaffolding.1.0.6\tools\init.ps 
1 is not digitally signed. The script will not execute on the system. Please see "get-help about_signing" for more details.. 
At line:1 char:2 
+ & <<<< 'Y:\asp\packages\T4Scaffolding.1.0.6\tools\init.ps1' $__rootPath $__toolsPath $__package $__project 
    + CategoryInfo   : NotSpecified: (:) [], PSSecurityException 
    + FullyQualifiedErrorId : RuntimeException 

Successfully installed 'MvcScaffolding 1.0.7'. 
File Y:\asp\packages\MvcScaffolding.1.0.7\tools\init.ps1 cannot be loaded. The file Y:\asp\packages\MvcScaffolding.1.0.7\tools\init. 
ps1 is not digitally signed. The script will not execute on the system. Please see "get-help about_signing" for more details.. 
At line:1 char:2 
+ & <<<< 'Y:\asp\packages\MvcScaffolding.1.0.7\tools\init.ps1' $__rootPath $__toolsPath $__package $__project 
    + CategoryInfo   : NotSpecified: (:) [], PSSecurityException 
    + FullyQualifiedErrorId : RuntimeException 

Successfully added 'EntityFramework 4.1.10715.0' to MyProject.Web. 
Successfully added 'T4Scaffolding 1.0.6' to MyProject.Web. 
File Y:\asp\packages\T4Scaffolding.1.0.6\tools\install.ps1 cannot be loaded. The file Y:\asp\packages\T4Scaffolding.1.0.6\tools\inst 
all.ps1 is not digitally signed. The script will not execute on the system. Please see "get-help about_signing" for more details.. 
At line:1 char:2 
+ & <<<< 'Y:\asp\packages\T4Scaffolding.1.0.6\tools\install.ps1' $__rootPath $__toolsPath $__package $__project 
    + CategoryInfo   : NotSpecified: (:) [], PSSecurityException 
    + FullyQualifiedErrorId : RuntimeException 

'InstallationDummyFile.txt' already exists. Skipping... 
Successfully added 'MvcScaffolding 1.0.7' to MyProject.Web. 
File Y:\asp\packages\MvcScaffolding.1.0.7\tools\install.ps1 cannot be loaded. The file Y:\asp\packages\MvcScaffolding.1.0.7\tools\in 
stall.ps1 is not digitally signed. The script will not execute on the system. Please see "get-help about_signing" for more details.. 
At line:1 char:2 
+ & <<<< 'Y:\asp\packages\MvcScaffolding.1.0.7\tools\install.ps1' $__rootPath $__toolsPath $__package $__project 
    + CategoryInfo   : NotSpecified: (:) [], PSSecurityException 
    + FullyQualifiedErrorId : RuntimeException 

因为init脚本没有被安装,该MvcScaffolding包未正确安装和scaffold命令不被识别后执行。

我不知道该怎么办这些代码签名问题。以下是当前的安全设置:

PM> Get-ExecutionPolicy -List 
Scope   ExecutionPolicy 
-----   --------------- 
MachinePolicy Undefined 
UserPolicy  Undefined 
Process   RemoteSigned 
CurrentUser  Undefined 
LocalMachine Unrestricted 

我可以将进程范围更改为无限制吗?如果是这样,怎么样?在控制台的NuGet运行Set-ExecutionPolicy不起作用:

PM> Set-ExecutionPolicy Unrestricted 
Execution Policy Change 
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic. Do you want to change the execution policy? 
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):Y 
Set-ExecutionPolicy : Windows PowerShell updated your execution policy successfully, but the setting is overridden by a policy defined at a more specific scope. Due to the override, your shell will 
retain its current effective execution policy of "RemoteSigned". Type "Get-ExecutionPolicy -List" to view your execution policy settings. For more information, please see "Get-Help Set-ExecutionPol 
icy." 
At line:1 char:20 
+ Set-ExecutionPolicy <<<< Unrestricted 
    + CategoryInfo   : PermissionDenied: (:) [Set-ExecutionPolicy], SecurityException 
    + FullyQualifiedErrorId : ExecutionPolicyOverride,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand 

我也试着做这一切作为管理员,但这并没有帮助的。

任何意见或想法将不胜感激。

UPDATE

我可以将进程执行政策的NuGet这样的:

Set-ExecutionPolicy Unrestricted -Scope Process 

但是,当我重新启动Visual Web Developer中,设置被遗忘,我仍然得到一个错误,因为它一直试图执行init.psl文件

如何永久更改执行策略?

回答

11

好的,我现在已经正确安装了MvcScaffolding。

我只好先绕行中的NuGet所有安全:

Set-ExecutionPolicy Bypass -Scope Process 

但是,当我重新启动Visual Web Developer中我仍然得到同样的那些错误的PowerShell用的NuGet上启动时运行init.pls待办事项。

我已经发现,这是因为我在网络驱动器上存储我的项目。显然,默认情况下PowerShell不会从网络驱动器执行脚本。

我试过使用CasPol来改变安全设置,但无法让它工作。我放弃了,当我看到其他人无法得到VS与映射驱动器以及工作:

CAS not working for VS2010 mapped drive

反正,我只是有我的项目的本地,现在,MvcScaffolding已安装并正常工作。

1

可以为用户范围的政策和使用这样更安全政策:

Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser 

要求所有脚本和配置文件由可信发布者签名,包括您在当地写剧本电脑。 在您尚未将其分类为受信任或不受信任的发布者运行脚本之前提示您。

对于为例,安装的EntityFramework问权限运行该脚本:

Executing script file 'c:\users\user\documents\visual studio 2015\Projects\zzz\packages\EntityFramework.6.1.3\tools\install.ps1' 
Do you want to run software from this untrusted publisher? 
File C:\users\user\documents\visual studio 2015\Projects\zzz\packages\EntityFramework.6.1.3\tools\install.ps1 is published by CN=Microsoft Corporation, OU=MOPR, O=Microsoft Corporation, L=Redmond, S=Washington, C=US and is not trusted on your system. Only run scripts from trusted publishers. 
[V] Never run [D] Do not run [R] Run once [A] Always run [?] Help (default is "D"):R