我有一个项目,它只是一个.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
答案 0 :(得分:0)
您似乎没有完全删除Entity框架,因此找不到路径:.nuget\packages.tools\Microsoft.EntityFrameworkCore.Tools
的错误。
代码中的某处必须有对此文件的引用。如果您正在使用project.json,请尝试检查Microsoft.EntityFrameworkCore.Tools
。
如果您使用的是.csproj SDK版本。检查项目文件中的任何参考文献并将其删除。