我是MVC 4和实体框架的新手,当我从包管理器控制台运行此命令时:
Enable-Migrations -ContextTypeName MyFirstMvcApp.Models.InventoryDbContext
Join-Path:无法将参数绑定到参数'Path',因为它为null。
我收到以下错误:
Join-Path : Cannot bind argument to parameter 'Path' because it is null.
At D:\GitProjects\MyFirstMvcApp\trunk\packages\EntityFramework.6.0.0-alpha2\tools\EntityFramework.psm1:363 char:27
+ $toolsPath = Join-Path <<<< $installPath tools
+ CategoryInfo : InvalidData: (:) [Join-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.JoinPathCommand
Join-Path : Cannot bind argument to parameter 'Path' because it is null.
At D:\GitProjects\MyFirstMvcApp\trunk\packages\EntityFramework.6.0.0-alpha2\tools\EntityFramework.psm1:392 char:73
+ $utilityAssembly = [System.Reflection.Assembly]::LoadFrom((Join-Path <<<< $toolsPath EntityFramework.PowerShell.Utility.dll))
+ CategoryInfo : InvalidData: (:) [Join-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.JoinPathCommand
You cannot call a method on a null-valued expression.
At D:\GitProjects\MyFirstMvcApp\trunk\packages\EntityFramework.6.0.0-alpha2\tools\EntityFramework.psm1:393 char:50
+ $dispatcher = $utilityAssembly.CreateInstance <<<< (
+ CategoryInfo : InvalidOperation: (CreateInstance:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Join-Path : Cannot bind argument to parameter 'Path' because it is null.
At D:\GitProjects\MyFirstMvcApp\trunk\packages\EntityFramework.6.0.0-alpha2\tools\EntityFramework.psm1:426 char:19
+ (Join-Path <<<< $runner.ToolsPath EntityFramework.PowerShell.dll),
+ CategoryInfo : InvalidData: (:) [Join-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.JoinPathCommand
我该如何解决这个问题? 请注意,我正在使用带有SP1的Visual Studio 2010 Ultimate,并且已在此link中安装了MVC4。
答案 0 :(得分:29)
通过卸载并重新安装实体框架来解决此问题。 为了他人的利益,这里有命令......
卸载:
PM&GT; Uninstall-Package EntityFramework -Force
卸载后,重新安装EntityFramework:
PM&GT; Install-Package EntityFramework -Pre
有!这是固定的。虽然我仍然不知道是什么原因引起了这个问题。
答案 1 :(得分:22)
Visual Studio 2019: 卸载软件包EntityFramework -Force
然后
Install-Package EntityFramework -Pre -Ver 6.2.0
v6.3.0出现了一些问题
答案 2 :(得分:13)
我面临着同样的问题,这就是我解决问题的方式,
我正在使用Visual Studio 2019,因此我安装了最新的Entity Framework 6.3.0(stable),当我运行Enable-Migrations命令时遇到了问题,我尝试重新安装Entity Framework,但没有这样做。无法正常工作,因此我从Nuget软件包管理器中安装了旧版本6.2.0显然可以正常工作。
答案 3 :(得分:9)
在这里尝试了所有东西。我个人讨厌一开始就不知道问题出在哪里而解决问题。在启动项目是Web应用程序的情况下,在论坛上进行深入研究,这似乎是版本6.3.0中引起的已知错误。他们已经在日常构建中对其进行了修复。因此,要解决该问题,您需要安装它。
首先,卸载软件包:
PM> Uninstall-Package EntityFramework -Force
然后安装最新的每日版本(在我的情况下为以下版本)
PM> Install-Package EntityFramework -Version 6.4.0-preview1-19506-01
答案 4 :(得分:4)
我从“ 6.2.0”升级到EntityFramework“ 6.3.0”时遇到了这个问题。有关问题和解决方法,请参见EF 6.3.0 PMC commands throw ParameterBindingValidationException
when Startup Project is a Web App。
当您有多个项目并将ASP.NET项目设置为“启动”项目时,就会出现问题
链接建议的解决方法:
如果您在解决方案中添加了新的虚拟控制台应用程序,并在其中安装了EntityFramework的每日版本,则将使用该版本的命令(包括修复程序)。该命令在引用EF 6.3的项目中可以正常使用。
个人解决方案:
将启动项目设置为非ASP.NET项目可以解决我的问题。请注意,如果使用连接字符串,则必须将其复制到相关项目的配置文件中。
答案 5 :(得分:3)
当我将EntityFramework更新到6.3.0版本时,我遇到了同样的问题,所以当我回到6.2.0时,它解决了这个问题,所以我建议您做同样的事情
答案 6 :(得分:1)
卸载实体框架并不适合我。
事实证明,问题并非Visual Studio
或Entity Framemwork
,但事实是我正在运行PowerShell 2
(在Windows 7
上)。
Entity Framework
和Visual Studio
需要PowerShell 3
。
更新并重新启动后,问题就消失了。 希望这会帮助一些人。
你可以在这里找到PowerShell - &gt; https://www.microsoft.com/en-us/download/details.aspx?id=40855
答案 7 :(得分:1)
几年后...
造成此问题的另一个可能原因是VS 2017 csproj格式-或更准确地说,与使用packages.config相比,PackageReference方法。
使用在项目文件中使用PackageReference格式包括Nuget软件包的新方法,不会执行EntityFramework的安装脚本(这是包括nuget软件包的新方法的已知事实)。因此,PowerShell命令尚未准备好执行。
Entity Framework GitHub repository上正在进行有关该问题的讨论。
在解决此问题之前(无论是由NuGet员工还是由EF人员)以便运行迁移(谈论EF 6-而不是EF Core!),您需要坚持使用包来包含Nuget包的“旧”方式。配置方法。
在以下位置检查您的Visual Studio设置
Tools -> Options -> NuGet Package Manager -> General
,并确保
Default package management format
设置为Packages.config
。
请注意,在切换此设置时,您将必须卸载所有软件包,保存项目,重新启动Visual Studio,然后重新安装所有软件包。 在当前的VS 2017版本(我认为从v 15.4开始)中,有一种自动从Packages.config转换为PackageReference的方法,但反之亦然(不幸的是)。
答案 8 :(得分:1)
在使用Code First迁移时,我遇到了同样的问题。
对我有用的是转到NuGet数据包管理器,然后搜索Entity Framework
。
我在那里安装了Pre-release version
,然后选择了Latest Stable version
并安装了它。
此后,一切正常。
答案 9 :(得分:1)
从6.3版开始,实体框架工具支持新的SDK样式的项目格式。
但是,当包含您的迁移的项目使用新的SDK样式格式,而启动项目使用经典的csproj格式时,此问题仍然可能发生。
要解决此问题,请使两个项目使用相同的csproj格式。
答案 10 :(得分:0)
我遇到了同样的问题,并通过更改Startup Project
来解决了这个问题。
我在同一解决方案中有5个项目,每次我Right Click
和Set as startup
到一个非ASPNET CORE项目时,都会出现这种错误。
答案 11 :(得分:0)
与上述建议共享,这是我的补充。
PM>卸载包EntityFramework -Force 然后;
PM>安装包EntityFramework -Pre
以上两个动作还不够。我需要做下一个:
然后在解决方案资源管理器中,在根目录级别的项目中创建一个包含以下代码的类-以我为例。然后自动创建其中包含Configurations.cs文件的Migrations文件夹。
public class MyDbContext : DbContext
{
pubic MyDbContext()
{
}
}
答案 12 :(得分:0)
我想添加在遇到此问题时发现的其他内容。
事实证明,就我而言(运行Visual Studio 2017,实体框架6.2),问题是项目位于远程目录(\ server \ user \ location)而不是本地目录中。
将项目复制到本地位置后,命令运行没有问题。