EF Core添加迁移构建失败

时间:2017-06-27 16:33:53

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

我有一位开发人员正在“构建失败”。在.NET Core EF项目中运行add-migration时,没有解释构建失败的原因。你如何解决这个错误?

这是他在软件包管理器控制台中获得的内容:enter image description here

其他信息

我们还有一些其他开发人员使用相同的解决方案代码(包括我自己),这些代码没有添加迁移的问题。

这是我在软件包管理器控制台中看到的:enter image description here

我们已经验证了项目的构建,并构建了整个解决方案。除了重启VS2015之外,我们已经完成了“dotnet restore”并多次重建。我们已经验证在解决方案资源管理器和Package Manager控制台下拉列表中都选择了正确的默认解决方案。我们已经确认他的计算机上安装了正确的SDK。关于接下来要检查什么,我感到很遗憾...任何时候我在添加迁移过程中遇到了失败我已经获得足够的信息指向我要检查的方向,但只是“构建失败。 “是一个相当无用的错误输出。

37 个答案:

答案 0 :(得分:29)

这是因为您的解决方案中的其他项目。例如,如果您的解决方案中有两个项目作为项目A和项目B.如果项目A未成功构建,则项目B数据迁移将失败。因此,您应该卸载项目A并再次将迁移添加到项目B.

我认为这不是一个好的答案,但希望这有帮助。

答案 1 :(得分:18)

在使用Visual Studio 2019版本16.5.0时,我为此而苦苦挣扎。

什么终于解决了:

  • 关闭Visual Studio;
  • 重新打开Visual Studio;
  • 如果您有多个项目,请确保右键单击“解决方案”,然后选择 Rebuild Solution

请注意,我之前尝试做过Rebuild Solution,但没有发现错误。因此,关闭VS并重新打开它很重要。

然后它显示导致 add-migration 命令失败并显示Build failed消息的错误。

答案 2 :(得分:15)

我遇到了完全相同的问题(.NET Core 2.0.1)。

如果重建项目,有时会有帮助。

当我在2个Visual工作室中打开项目时,我也遇到了问题 关闭一个Visual Studio修复错误。

答案 3 :(得分:8)

在我的情况下,这是错误

from mysql.connector import pooling
import binascii

conn_pool = pooling.MySQLConnectionPool(pool_name="PipelinePool", pool_size=5, **DB_CONFIG)
conn = conn_pool.get_connection()
cursor = conn.cursor()

with open('test.jpg', 'rb') as image_file:
    image = image_file.read()
    cursor.callproc('INSERT_IMG', args=(binascii.hexlify(image)))
    conn.commit()

我通过在dotnet ef命令中添加-v(或--verbose)标志来解决这个问题。

答案 4 :(得分:3)

有同样的情况。 下一步帮助:

  1. 打开软件包管理器控制台
  2. 将目录更改为迁移文件夹:cd C:\YourSolution\YourProjectWithMigrations
  3. 输入到PM:dotnet ef migrations add YourMigrationName

答案 5 :(得分:3)

尝试:
1.第一种清洁溶液
2.分别构建每个项目。
3.解决错误(如果找到)(有时VS在您单独构建它之前有时不会显示错误)
4.然后尝试再次运行迁移

答案 6 :(得分:1)

我有完全相同的错误,但我使用Visual Studio Community 2017版本15.2(26430.14)来构建.Net核心项目。

我有一个ASP.NET Core MVC Web项目和一个使用ASP.NET Core Identity的独立安全项目。 Web项目包含aspsettings.json配置文件中的连接字符串。

我还安装了 Bundler& Visual Studio中的Minifier Web Essentials 2017 扩展,以便我可以编译,缩小和捆绑我的资产并将它们放到wwwroot。

我发现这是MSBuild秘密下载的2个扩展导致了这个问题,因为我有在构建时启用Bundle 在构建时启用编译。禁用之后,一切正常。

可能不是您问题的原因,但可能值得尝试一下。

答案 7 :(得分:1)

就我而言,该应用程序正在运行。显然,它需要停止。反正还是奇怪的错误消息。

答案 8 :(得分:1)

刚进入这个问题。 由于我的原因,我正在调试代码,这使我的迁移失败。

由于在Visual Studio Code中,调试器是如此低调(只有一小部分),直到我读了一些问题并决定看起来更好之后,我才意识到这一点。

只需回答就可以对某人有所帮助。

答案 9 :(得分:1)

对于我来说,添加软件包Microsoft.EntityFrameworkCore.Tools已解决的问题

答案 10 :(得分:1)

就我而言,我有几个这样的错误:

The process cannot access the file 'C:\xxx\bin\Debug\netcoreapp3.1\yyy.dll' 
because it is being used by another process. [C:\zzz.csproj]

仅在添加-v参数后,我才能看到这些错误。

解决方案是关闭Visual Studio,然后再次运行命令。

答案 11 :(得分:1)

代码中很可能存在现有错误。首先尝试重建并更正所有错误。

发生在我身上,我正在尝试回滚迁移,但是我还没有更正代码中的错误。

答案 12 :(得分:1)

打开“输出”窗口,然后检查您的构建日志。就我而言,即使我当前的配置为ReleaseAdd-Migration仍在Debug中构建了项目,但发生了错误。由于某种原因,除了我的“输出”窗口外,VS没有在其他任何地方显示错误。

答案 13 :(得分:0)

就我而言,重建项目效果很好。运行项目也很好,执行一些端点也可以。

但是仍然在更新数据库上,即使在命令中添加了-Verbose,也仍然会显示“ Build Failed”(构建失败)。

最后,在单元测试项目中发生了一个错误,该错误会(由于某种原因)导致“ Build Failed”错误。

由于我在同一个解决方案下拥有多个项目,所以我只需要重建当前正在从事的项目即可。看来,当发生此错误时,最好重建整个解决方案并解决错误...

答案 14 :(得分:0)

只有清除 Visual Studio 缓存对我有帮助

  1. 关闭 Visual Studio(确保任务管理器中不存在 devenv.exe)
  2. 删除 %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\16.0\ComponentModelCache 目录。
  3. 重新启动 Visual Studio。您可能还需要清理用户的临时文件夹。它通常位于 %USERPROFILE%\AppData\Local\Temp 下。

答案 15 :(得分:0)

我猜可能有很多可能性。就我而言,这是由于软件包版本不平衡

我有

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.1"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.3"/>

我只需要将核心设计包降级到3.1.1即可匹配上层核心版本

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.1"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.1"/>

然后效果很好

答案 16 :(得分:0)

我遇到了同样的问题。如果您选择了 .NET Core 工具收集使用数据以改进 Windows,那么您可以使用 getVehicleLists() { return this.http.get<any>(environment.ApiUrl + `/api/url`); } 来解决丢失/持续存在的问题。

答案 17 :(得分:0)

开发人员最终从TFS取消映射项目,删除它并重新映射它。它现在正在为他工作。

答案 18 :(得分:0)

对我来说是同样的错误。我试过-v但什么也没做。然后我意识到我已经改变了模型,以至于控制器显示出错误。

一旦我修复了它工作的控制器中的错误。

答案 19 :(得分:0)

这是因为从解决方案中删除项目或类库,并在删除相同名称后添加项目。 最好的办法是删除解决方案文件并向其中添加项目。这对我有用 (我是使用vsCode做到的)

答案 20 :(得分:0)

就我而言,缺少的是声纳依赖项。当我在 Rider 中构建项目时,它成功了,但在从终端触发构建(dotnet 构建)时失败了。这是由 Rider 中的错误设置引起的。解决方案是在终端触发声纳扫描。

答案 21 :(得分:0)

在我的情况下,这是因为我在某个地方出错。就像在数据库配置文件中缺少逗号一样,因此VS在构建之前不会抛出异常

所以只需尝试运行您的代码...

答案 22 :(得分:0)

就我而言,它失败了,因为解决方案中一个不相关的项目失败了。卸载该项目并再次运行命令。

答案 23 :(得分:0)

我在运行时遇到了同样的问题:  dotnet ef migrations add InitialCreate 所以我尝试使用以下方法构建项目:  dotnet build命令。

它引发错误:例如Startup.cs(20,27): error CS0103: bla bla。您可以跟踪找到代码中的错误。

然后我重构代码并运行:  再次dotnet build 检查所有错误,直到没有错误并且构建成功为止。 然后运行: dotnet ef migrations add InitialCreate 然后构建成功。

答案 24 :(得分:0)

当我尝试运行添加迁移时遇到了相同的错误。确保您的代码中没有任何语法错误。我的代码中出现语法错误,修复后,我可以运行add-migration。

答案 25 :(得分:0)

1:我收到错误消息: PM>添加迁移“ InitialDB” 构建失败。 2:错误是缺少“(”。我更正了,错误消失了。

这样的错误,您可以在输出中看到该错误。该错误是由于代码问题。

答案 26 :(得分:0)

事实证明,这也可能是由BuildEvents引起的。对我来说,我在那里引用$(SolutionDir)。对于常规构建,此变量具有价值,但显然在项目级别运行dotnet *命令。 $(SolutionDir)在详细模式(-v)中像 Undefined 一样出现。对我来说这似乎是个错误。

答案 27 :(得分:0)

我遇到了同样的错误。在构建过程中没有错误。我关闭了Visual Studio,它起作用了。

答案 28 :(得分:0)

我遇到了同样的错误。我通过停止项目构建来修复它。之后,它运行良好。

答案 29 :(得分:0)

确保您在startup.cs内部具有代码生成

示例

<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
 <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.1.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.3" />
 </ItemGroup>

</Project>

答案 30 :(得分:0)

我建议添加-v以获得更多信息。

在我的示例中,我必须添加 <LangVersion>latest</LangVersion>进入我的项目,因为其中一些项目不存在。

答案 31 :(得分:0)

尝试先保存DataContext.cs。它对我有用。

答案 32 :(得分:0)

我有同样的错误。我所做的是,我更正了我在代码中遇到的错误,并重建了项目。然后我运行了ms-dos命令,它起作用了。

答案 33 :(得分:0)

可能是由于您未在YOUR_PROJECT.csproj中添加此内容引起的

void

答案 34 :(得分:0)

我认为下面的2条命令始终有效(如果在项目文件夹中运行它们)

  • dotnet ef迁移添加(来自ApplicationDbContextDBContext的数据库对象)
  • dotnet ef数据库更新

答案 35 :(得分:0)

我认为当我尝试在dotnet ef migrations add xyz运行时运行时,这种情况发生在我身上。

最后,为了确定,我停止了当前正在运行的实例,然后再次运行它以确保它已重建,再次停止它并且我能够运行dotnet ef migrations add命令

答案 36 :(得分:0)

重新启动Visual Studio对我有用。