Почему поведение ExecutionPolicy различается в разных проектах в Visual Studio?
Я использую NuGet в течение довольно долгого времени на конкретном ПК. Теперь я создал новый проект в VS2010 (это бета-проект MVC 4 с использованием шаблона приложения для одной страницы, если это имеет значение). Когда я выбираю
Инструменты / Библиотека Пакет Менеджер / Консоль Диспетчера Пакетов
откроется окно консоли, но отобразится сообщение об ошибке:
файл C:Program файлы (x86)Microsoft Visual Studio
10.0Common7IDEExtensionsMicrosoft CorporationNuGet Package Не удается загрузить Manager1.7.30402.9028ModulesNuGetprofile.ps1
потому что выполнение скриптов в этой системе отключено. Пожалуйста
дополнительную информацию см. В разделе "get-help about_signing".
однако другие проекты все еще могут открывать и использовать консоль диспетчера пакетов.
в каждом случае VS2010 работает как один и тот же пользователь.
Если я открою командную строку (используя ту же учетную запись, под которой работает VS2010), запустите PowerShell и введите команда
Get-ExecutionPolicy
PowerShell возвращает
ограничен
мое понимание основано на Scott Hanselman blog это то, что скрипты не должны выполняться вообще, если ExecutionPolicy ограничен.
почему существующие проекты могут использовать консоль диспетчера пакетов, а новая нет?
обновление: изменение ExecutionPolicy на AllSigned и перезапуск VS2010 решает непосредственную проблему, но мой главный вопрос заключается в том, почему другие проекты смогли обойти установленную ExecutionPolicy. VS2010 составляет не Запуск от имени администратора.
8 ответов:
Я испытал ту же проблему и решил ее:
- Открытие Powershell от имени администратора
- ввод следующей команды "Set-ExecutionPolicy RemoteSigned"
- перезапустите Visual Studio и консоль диспетчера пакетов работала как ожидалось
важно отметить, однако, что Powershell даст вам предупреждение
"политика выполнения помогает защитить вас от сценариев, которые вы не делаете доверие. Изменение политики выполнения может привести к возникновению угроз безопасности, описанных в разделе справки about_Execution_Policies. Вы хотите изменить политику выполнения?"
и следует внимательно следить за включением этой функции и читать дополнительную информацию в разделах справки о рисках безопасности.
кроме Murries' ответ, Я нашел jellonek после (в другом потоке) полезно. Возможно, вам придется изменить разрешения для другой версии PowerShell (32-разрядные и 64-разрядные версии требуют отдельных разрешений).
с как узнать, является ли PowerShell 32-разрядным или 64-разрядным:
- 64-разрядный путь PowerShell: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- 32-разрядная оболочка PowerShell Путь: C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
и и это должно работать:
- Set-ExecutionPolicy RemoteSigned
- Set-ExecutionPolicy Unrestricted
другой способ исправить это-объединить файл Regedit со следующим содержимым:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\PowerShell\ShellIds\Microsoft.PowerShell] "ExecutionPolicy"="Unrestricted" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\ShellIds\Microsoft.PowerShell] "ExecutionPolicy"="Unrestricted"(создайте текстовый файл с именем NuGetPowerShellFix.txt, скопируйте вставку выше в него, переименуйте в NuGetPowerShellFix.Редж, тогда беги.)
после объединения вышеуказанного файла перезапустите Visual Studio.
Если вы используете NuGet в Visual Studio 2013 и получаете эту досадную ошибку, перейдите в меню Сервис | Диспетчер пакетов NuGet | параметры диспетчера пакетов и нажмите кнопку "Очистить кэш пакетов."Перезапустите Visual Studio. Я знаю, что есть несколько решений для этого, так это еще один, чтобы попробовать.
У меня тоже была эта проблема с перерывами. Я просто наткнулся на него снова и наткнулся на эту нить. В моем последнем случае я понял, что у меня был VS 2013 открыт дважды (что обычно не является проблемой, я делаю это все время). Поскольку единственная общая тема других, которая, казалось, исправляла ее, была косвенно связана с требованием привилегий администратора, я дал ей шанс и закрыл оба экземпляра VS и снова открыл свое решение в новом экземпляре. Запустил установку nuget, и она работала без цеплять.
исходя из этого, я думаю, что это проблема с разрешением файла, вызывающая эту ложную ошибку. Вроде как, когда windows имеет блокировку файла в каталоге bin после сеанса отладки и не позволит вам скомпилировать решение.
вы можете решить эту проблему, не запустив Visual Studio в качестве администратора.
другая причина, то же сообщение об ошибке; может быть полезно для тех, кто сталкивается с этим.
Так как нам нужно было создать проект на общем ресурсе на удаленном сервере в нашей сети и столкнулись с подобными проблемами вот что сработало:
- сопоставьте общий ресурс как сетевой диск, скажем R: (но я думаю, что он также будет работать без этого сопоставления)
- открыть Свойства обозревателя > безопасность > локальная интрасеть > сайты > дополнительно (через IE или панель управления)
- добавить либо " R:", либо " file://server.домен.xy "(первый автоматически превратится во второй, как только вы откройте диалоговое окно)
- запустите исполняемый файл x86 PowerShell и выполните "Set-ExecutionPolicy RemoteSigned"
Как только я сделал все, что Visual Studio не жаловался, что проект был в ненадежном месте при открытии решения снова, и он успешно запустил все сценарии PowerShell для пакетов, которые автоматически устанавливаются при создании нового приложения MVC.
У меня сейчас эта проблема, я думаю, что для меня было легко, что мне просто нужно было перезапустить visual studio 2013 и запустить его как администратор...работал быстро для меня.
Comments