如何修改Visual Studio的NuGet路径?能否不通过PM执行add-migration命令?
不用Package Manager执行add-migration的可行方案
问题场景
执行PM> add-migration testing命令时触发权限错误。
问题详情
公司安全策略限制了C:\Users\name\...路径下的文件运行权限,导致EF Core工具的init.ps1脚本被拦截。已经把项目代码移到拥有管理员权限、可自由运行文件的C:\adminrun\repos目录,项目能正常启动,但EF工具的init.ps1仍存放在被封禁的C:\Users\name\.nuget\packages路径里。
核心疑问
能不能绕过Package Manager,直接执行add-migration命令?
错误信息
& : 文件 C:\Users\name.nuget\packages\microsoft.entityframeworkcore.tools\6.0.13\tools\init.ps1 无法加载,因为其操作被软件限制策略(例如通过组策略创建的策略)阻止。
在第1行第45字符:
- ... rgs+=$_}; & 'C:\Users\name.nuget\packages\microsoft.entityfram ...
CategoryInfo: SecurityError: (:) [], PSSecurityException
FullyQualifiedErrorId : UnauthorizedAccess
当前NuGet配置文件(C:\Users\name\AppData\Roaming\NuGet\NuGet.Config)
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> <add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages" /> ... </configuration>
可行解决办法
1. 直接用.NET CLI命令
打开CMD或PowerShell,切换到你的项目根目录(C:\adminrun\repos\你的项目文件夹),执行:
dotnet ef migrations add testing
- 如果还没装EF Core CLI工具,全局安装命令:
dotnet tool install --global dotnet-ef - 要是全局路径也受限制,就安装到项目本地:
dotnet tool install dotnet-ef --tool-path .,之后用.\\dotnet-ef migrations add testing执行命令
2. 修改NuGet包存储路径
把NuGet包的存储目录改成允许运行文件的路径,比如C:\adminrun\nuget-packages:
- 打开
C:\Users\name\AppData\Roaming\NuGet\NuGet.Config - 在
<configuration>节点里添加:
<config> <add key="globalPackagesFolder" value="C:\adminrun\nuget-packages" /> </config>
- 保存后,清理项目的NuGet包缓存,重新还原包。之后EF工具的脚本会存到新路径,再用Package Manager执行命令就不会被拦截了。
内容的提问来源于stack exchange,提问作者dave
相关产品推荐
相关产品推荐

