在项目目录中指定使用哪个项目文件

14

尝试在包管理器控制台中使用“dotnet ef”命令。 在 PMC 中,cd 到 .csproj 目录,仍然会收到以下错误提示:

dotnet : Specify which project file to use because this 'C:\Users\PC-NAME\Source\Repos\TestProject\Test" contains more than one project file.
At line:1 char:1

dotnet ef migrations add TestMigration
  + CategoryInfo          : NotSpecified: (Specify which p...e project file.:String) [], RemoteException
  + FullyQualifiedErrorId : NativeCommandError

尝试使用-p / --p并指向.csproj文件/目录 - 仍然出现相同的错误。

使用.NET CORE,MVC项目,最新的EF Core 2.0.2版本。

关于这个问题,互联网上没有太多有价值的数据,只是一种猜测,即dotnet ef命令正在寻找要运行的.exe文件。

希望得到帮助。


1
为什么不直接使用EF Core PMC命令呢? - bricelam
5个回答

2
如果您的项目包含多个 .csproj 文件,您应该将它们移动到项目文件夹以外的另一个目录中,并重新运行命令行。
在我的情况下,项目文件夹中有两个 .csproj 文件:CoreWebApplication.csproj 和 CoreWebApplication-backup.csproj,所以我移动了 CoreWebApplication-backup.csproj,只保留了 CoreWebApplication.csproj。
dotnet ef ... -p CoreWebApplication.csproj -s CoreWebApplication.csproj

这个比较复杂一点。移除文件夹后,我遇到了另一个错误,请参考:https://dev59.com/O1MI5IYBdhLWcg3wHHgz;安装后,运行清理并构建解决方案。然后在包管理器控制台中运行dotnet ef命令。最终成功运行了。 - Dhruv

1

您需要使用--startup-project-p来指定您的启动项目和数据项目。

dotnet ef migrations add TestMigration -p <path-to-your-project-with-your-db-context>.csproj --startup-project <path-to-your-project-with-your-program.cs>.csproj

0
在我的情况下,我有两个 .csproj 文件:SomeWebApp.csproj 和 SomeWebApp-backup.csproj,所以我删除了 SomeWebApp-backup.csproj,保留了 SomeWebApp.csproj,并再次运行迁移,结果成功了。

0
在我的情况下,我之前在Visual Studio for MAC上创建了这个Docker Compose项目,其中包括我的文件夹中的docker-compose.dcproj文件。在它起作用之前,我不得不将"docker-compose.dcproj"文件移动到另一个文件夹中。你也可以删除那个文件,因为我觉得它没有用处。
对我有效的命令如下所示,用于脚手架:
dotnet ef dbcontext scaffold 'Server=localhost;Database=<DatabaseName>;User=<username>;Password=<password>;TrustServerCertificate=True;' Microsoft.EntityFrameworkCore.SqlServer -p projectName.csproj -s projectName.csproj -o Data

-3

你需要同时指定 -p-s 参数:

dotnet ef ... -p ThisOne.csproj -s ThisOne.csproj

在哪里

-p  --project <PROJECT> The project to use.
-s  --startup-project <PROJECT> The startup project to use.

EF Core .NET 命令行工具


我提交了问题[#11330](https://github.com/aspnet/EntityFrameworkCore/issues/11330),以使这种体验更好。 - bricelam
4
我正在尝试使用这种方法,但仍然提供“-p”和“-s”参数无法解决问题。输入“dotnet ef -p BlazorApp1.csproj -s BlazorApp1.csproj”会返回“Specify which project file to use...”错误信息。项目路径当然是正确的,我已经切换到项目文件夹中。 - Piotrek
1
注意:即使您指定了项目和/或启动项目,如果未安装并将dotnet-ef添加到您的PATH中,则似乎会收到完全相同的错误文本。 - Kit Grose
3
我遇到了相同的错误。我刚将 /home/yuri/.dotnet/tools/ 添加到我的 PATH 中。当我运行 dotnet ef -p myProject.csproj -s myProject.csproj 时,它返回给我 Specify which project file to use because this '/home/yuri/Documents/csharp' contains more than one project file.。我该如何解决这个问题呢? - Yuri Melo
2
与5.0.0工具一样。同时指定两者无效。 - r590

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接