【问题标题】:Running dotnet ef without Visual Studio throws an exception在没有 Visual Studio 的情况下运行 dotnet ef 会引发异常
【发布时间】:2017-02-17 17:52:57
【问题描述】:

我有一个项目,它是一个 .NET Core 控制台应用程序,只有一个模型和一些种子数据。在开发桌面上,我可以进入应用程序目录,运行dotnet ef database update,一切正常(我需要将appsettings.json 复制到bin\... 目录,但是可以)。

问题是当我需要在客户端环境中运行它时(通过 VPN 访问,并且没有 Visual Studio)。首先,我不确定我需要将什么复制到远程机器上。但是,假设我复制了整个项目。首先,当我运行时,我收到以下错误:

未处理的异常:System.IO.DirectoryNotFoundException:找不到路径“.nuget\packages.tools\Microsoft.EntityFrameworkCore.Tools”的一部分。

我有一个目录 .nuget\packages\Microsoft.EntityFrameworkCore.Tools 但不在.tools 下。出于绝望,我创建了 .tools 并在其下复制了这个目录,但现在我收到以下异常:

未处理的异常:System.NullReferenceException:对象引用未设置为对象的实例。
在 Microsoft.DotNet.Cli.Utils.ProjectToolsCommandResolver。 ResolveCommandSpecFromToolLibrary(LibraryRange toolLibraryRange, String commandName, IEnumerable`1 args, ProjectContext projectContext)
在 Microsoft.DotNet.Cli.Utils.ProjectToolsCommandResolver。 ResolveCommandSpecFromAllToolLibraries(IEnumerable`1 toolsLibraries, String commandName, IEnumerable`1 args, ProjectContext projectContext)
在 Microsoft.DotNet.Cli.Utils.ProjectToolsCommandResolver。 ResolveFromProjectTools(String commandName, IEnumerable`1 args, String projectDirectory)
在 Microsoft.DotNet.Cli.Utils.ProjectToolsCommandResolver.Resolve (CommandResolverArguments commandResolverArguments)
在 Microsoft.DotNet.Cli.Utils.CompositeCommandResolver.Resolve (CommandResolverArguments commandResolverArguments)
在 Microsoft.DotNet.Cli.Utils.CommandResolver.TryResolveCommandSpec(String commandName, IEnumerable`1 args, NuGetFramework framework, String configuration, String outputPath)
在 Microsoft.DotNet.Cli.Utils.Command.Create(String commandName, IEnumerable`1 args, NuGetFramework framework, String configuration, String outputPath)
在 Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, ITelemetry telemetryClient)
在 Microsoft.DotNet.Cli.Program.Main(String[] args)

显然,我的反复试验试图找到正确的方法碰壁了。是否有一些关于如何在 Visual Studio 之外运行 EF Core 命令的实质性(不仅仅是语法)文档?如果重要的话,.NET 是 1.1 版

【问题讨论】:

  • 请发布您的project.json.csproj
  • 您使用的是什么版本的 EF?您使用的是基于 project.json 还是 csproj 的解决方案?
  • EF Core 1.1。项目.json。我的错误是我没有运行dotnet restore(请参阅下面的评论)

标签: asp.net-core entity-framework-core


【解决方案1】:

您似乎没有完全删除实体框架,因此找不到路径:.nuget\packages.tools\Microsoft.EntityFrameworkCore.Tools 的错误。

代码中的某处必须引用此文件。如果您使用的是 project.json,请尝试检查 Microsoft.EntityFrameworkCore.Tools 的工具和依赖关系。

如果您使用的是 .csproj SDK 版本。检查您的项目文件中的任何这些引用并删除它们。

【讨论】:

  • 当然,这个包是有依赖关系的。没有这种依赖 dotnet ef 根本不会运行。在 Visual Studio 中,我只需转到 NuGet 包管理器(屏幕或命令行)并安装它。问题是如何解决依赖关系;不是如何摆脱它。也就是说,您的回答让我开始思考......在我将项目复制到远程服务器后,我没有运行nuget install,而是运行dotnet restore,它在package.json 中安装了所有 包。由于没有更好的答案,我会用感谢标记你的!
  • 啊对不起,我想念你了。您应该发表评论和答案并将其标记为答案:-)。感谢您无论如何发布您的解决方案:)
猜你喜欢
  • 1970-01-01
  • 2021-12-05
  • 2015-11-29
  • 2021-12-26
  • 1970-01-01
  • 2017-09-03
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多