Ошибки политики NuGet при установке пакета MvcScaffolding

Я использую Visual Web Developer Express 2010, Windows XP и используя ASP.NET MVC4 RC в проекте. У меня установлен NuGet v2.0.30619.9119.

Теперь я пытаюсь установить пакет MvcScaffolding через консоль диспетчера пакетов NuGet. Я получаю следующие ошибки:

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

Поскольку сценарии инициализации не выполняются после установки, пакет MvcScaffolding установлен неправильно и команда scaffold не распознается.

Я не знаю, что делать с этими проблемами подписи кода. Вот текущие настройки безопасности:

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

Можно ли изменить область действия для неограниченного? Если да, то как? Запуск Set-ExecutionPolicy в консоли NuGet не работает:

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 файлы

Как изменить политику выполнения на постоянной основе?

Ответ 1

Хорошо, теперь у меня MvcScaffolding правильно.

Мне пришлось сначала обойти всю безопасность в NuGet:

Set-ExecutionPolicy Bypass -Scope Process

Но когда я перезапускаю Visual Web Developer, я все равно получаю те же самые ошибки PowerShell, что и при запуске NuGet init.pls при запуске.

Я это разработал, потому что я сохранял свой проект на сетевом диске. По-видимому, PowerShell по умолчанию не выполнит сценарии с сетевого диска.

Я попытался использовать CasPol для изменения настроек безопасности, но не смог заставить его работать. Я отказался, когда увидел, что другие люди не могут заставить VS работать с подключенными дисками:

CAS не работает для сопоставленного диска VS2010

В любом случае, теперь у меня только локальный проект, и MvcScaffolding установлен и работает.

Ответ 2

Вы можете установить политику для области пользователя и использовать более безопасную политику следующим образом:

Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser

Требуется, чтобы все сценарии и файлы конфигурации подписывались доверенным издателем, включая сценарии, которые вы пишете на локальном компьютере. Подсказывает вас перед запуском скриптов издателей, которые вы еще не классифицировали как доверенные или ненадежные.

Например, установка EntityFramework запрашивает разрешение на запуск script:

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