EF Core 添加迁移构建失败
EF Core add-migration Build Failed
我有一个开发人员在 .NET Core EF 项目中 运行 添加迁移时得到 "Build failed.",但没有解释构建失败的原因。您如何解决此错误?
这是他在包管理器控制台中得到的:
附加信息:
我们有一些其他开发人员使用相同的解决方案代码(包括我自己),他们在添加迁移方面没有问题。
这是我在程序包管理器控制台中看到的:
我们已验证项目已构建,并且整个解决方案已构建。除了重新启动 VS2015 之外,我们已经完成 "dotnet restore" 并多次重建。我们已验证在解决方案资源管理器和包管理器控制台下拉列表中都选择了正确的默认解决方案。我们已经验证他的机器上安装了正确的 SDK。我不知道接下来要检查什么......任何时候我在添加迁移过程中失败时我都会获得足够的信息来指出我要检查什么的方向,但只是 "Build failed." 是一个相当无用的错误输出。
开发人员最终从 TFS 取消映射项目,将其删除,然后重新映射。现在对他有用了。
我有完全相同的错误,但我正在使用 Visual Studio Community 2017 Version 15.2 (26430.14) 构建 .Net Core 项目。
我有一个 ASP.NET Core MVC web 项目和一个使用 ASP.NET Core Identity 的独立安全项目。 Web 项目在 aspsettings.json 配置文件中包含连接字符串。
我还在 Visual Studio 中安装了 Bundler & Minifier 和 Web Essentials 2017 扩展,以便我可以编译、缩小和把我的资源打包放到 wwwroot.
我发现是 MSBuild 秘密下载的那两个扩展导致了这个问题,因为我有 Enable Bundle on Build 和 Enable Compile on Build上。在我禁用它之后,一切正常。
可能不是您遇到问题的原因,但值得一试。
这是因为您的解决方案中有其他项目。例如,如果您的解决方案中有两个项目,分别是项目 A 和项目 B。如果项目 A 未成功构建,则项目 B 数据迁移将失败。因此,您应该卸载项目 A 并再次将迁移添加到项目 B。
我认为这不是一个好的答案,但希望能有所帮助。
我遇到了完全相同的问题 (.NET Core 2.0.1)。
有时重建项目会有帮助。
我在2 Visual Studio秒打开项目时也遇到了这个问题。
关闭一个 Visual Studio 修复了错误。
有过同样的情况。
这有助于:
打开包管理器控制台
将目录更改为 Migrations 文件夹:
cd C:\YourSolution\YourProjectWithMigrations
下午输入:
dotnet ef migrations add YourMigrationName
我想当我尝试 运行 dotnet ef migrations add xyz
时我已经 运行ning 了。
最后,为了确定,我停止了当前的 运行ning 实例,然后再次 运行 以确保它被重建,再次停止它并且我能够 运行 dotnet ef migrations add
命令
在我的情况下是错误
namespace aspnetcore does not exist .. are you missing a reference?
我已经通过将 -v(或 --verbose)标志添加到 dotnet ef 命令来解决这个问题。
在 Visual Studio 中打开输出 window 并检查您的构建日志。就我而言,尽管我当前的配置是 Release
,但 Add-Migration
在 Debug
中构建了项目,但出现了错误。出于某种原因,除 Output window 之外,VS 没有在任何地方显示错误。
我认为下面的 2 个命令总是有效(如果你 运行 它们在项目的文件夹中)
- dotnet ef 迁移添加(来自 ApplicationDbContextDBContext 的数据库对象)
- dotnet ef 数据库更新
可能是因为你没有在YOUR_PROJECT.csproj
中添加这个
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.Dotnet" Version="2.0.2" />
您的代码中很可能存在错误。首先尝试重建并更正所有错误。
发生在我身上,我正在尝试回滚迁移,但我还没有更正代码中的错误。
我有同样的错误。我所做的是,我纠正了代码中的错误,并重建了项目。然后我 运行 ms-dos 命令成功了。
先尝试保存 DataContext.cs。它对我有用。
尝试以下步骤:
清洗溶液。
分别构建每个项目。
解决任何发现的错误(有时,VS 不会显示错误,直到您单独构建它)。
然后再次尝试运行迁移。
我建议添加 -v
以获得更多信息。
在我的示例中,我必须添加
<LangVersion>latest</LangVersion>
到我的项目中,因为其中一些项目中缺少这一点。
刚刚进入这个问题。
就我而言,我正在调试我的代码,这导致我的迁移失败。
由于在 Visual Studio 代码中,调试器是如此低调(只有一个小酒吧),直到我阅读了一些问题并决定看起来更好时,我才意识到这一点。
就我而言,应用程序是 运行。显然,它需要停止。总有奇怪的错误消息。
确保你在里面有代码生成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>
我遇到了同样的错误。我通过停止项目构建来修复它。之后一切正常。
我遇到了同样的错误。构建过程中没有错误。我关闭了 Visual Studio 并且它起作用了。
原来这也可能是由 BuildEvents 引起的。对我来说,我在那里引用 $(SolutionDir) 。对于常规构建,此变量具有值,但 运行 dotnet * 命令显然是在项目级别完成的。 $(SolutionDir) 在详细模式 (-v) 下的结果类似于 Undefined。这对我来说似乎是个错误。
1:我收到错误:
PM> 添加迁移 "InitialDB"
构建失败。
2:The 错误是缺少“(”。我更正了它,错误消失了。
所以你可以在输出中看到错误。错误是因为代码问题。
当我尝试 运行 add-migration
时遇到同样的错误。请确保您的代码中没有任何语法错误。
我的代码中存在语法错误,修复后,我能够 运行 add-migration
.
我在 运行 时遇到了同样的问题:
dotnet ef migrations add InitialCreate
所以我所做的是尝试使用以下方法构建项目:
dotnet build
命令。
它抛出一个错误:例如 Startup.cs(20,27): error CS0103: bla bla
。您可以通过追踪找到代码中的错误。
然后我重构了代码 运行:
dotnet build
再一次
检查任何错误,直到没有错误并且构建成功。
然后运行:
dotnet ef migrations add InitialCreate
然后构建成功。
在我的例子中,它失败了,因为解决方案中的一个不相关的项目失败了。卸载该项目,运行 命令再次生效。
在我的例子中,这是因为我在某处出错了。就像在数据库配置文件中缺少昏迷,所以 VS 直到构建
才抛出异常
所以只需尝试 运行 您的代码...
我在使用 Visual Studio 2019 版本 16.5.0 时遇到了这个问题。
最后怎么解决的:
- 关闭Visual Studio;
- 重新打开 Visual Studio;
- 如果您有多个项目并且 select
Rebuild Solution
. ,请确保右键单击解决方案
请注意,我之前尝试执行 Rebuild Solution
,但没有发现错误。所以关闭VS重新打开很重要
然后显示导致 add-migration
命令失败并显示 Build failed
消息的错误。
这是因为从解决方案中删除项目或 class 库并在删除同名项目后添加项目。
最好的办法是删除解决方案文件并将项目添加到 it.this 对我有用
(我使用 vsCode 做到了这一点)
我也有同样的错误。我试过 -v 但没有。然后我意识到我已经改变了模型太多以至于控制器显示错误。
一旦我修复了控制器中的错误,它就可以工作了。
我猜它可能有很多可能性。就我而言,这是由于包版本不平衡
我有
<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"/>
然后它运行良好
在我的例子中,添加包 Microsoft.EntityFrameworkCore.Tools 修复问题
就我而言,我有几个这样的错误:
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 和 运行 命令。
在我的例子中,重建 Project 工作正常。 运行 该项目也运行良好并且执行了一些端点。
但仍然在更新数据库上它会说“构建失败”而没有任何说明,即使在命令中添加了 -Verbose。
最后碰巧单元测试项目中有一个错误会(由于某种原因)导致“构建失败”错误。
由于我在同一个 解决方案 下有多个项目,我将只重建我当前正在处理的项目。看来,当发生此错误时,最好重建整个 Solution 并解决错误...
只有清除 Visual Studio 缓存对我有帮助
- 关闭 Visual Studio(确保 devenv.exe 不在任务管理器中)
- 删除 %USERPROFILE%\AppData\Local\Microsoft\VisualStudio.0\ComponentModelCache 目录。
- 重启Visual Studio。您可能还需要清理用户的临时文件夹。它通常位于 %USERPROFILE%\AppData\Local\Temp.
下
我遇到了同样的问题。如果您选择了 .NET Core 工具收集使用数据以进行 Windows 改进,那么您可以使用 dotnet build
来解决 missing/persisting 问题。
在我的例子中,缺少的是 sonarqube 依赖项。当我在 Rider 中构建项目时,它成功了,但在从终端触发构建(dotnet 构建)时失败了。这是由 Rider 中的错误设置引起的。解决方案是在终端中触发声纳扫描。
我有一个开发人员在 .NET Core EF 项目中 运行 添加迁移时得到 "Build failed.",但没有解释构建失败的原因。您如何解决此错误?
这是他在包管理器控制台中得到的:
附加信息:
我们有一些其他开发人员使用相同的解决方案代码(包括我自己),他们在添加迁移方面没有问题。
这是我在程序包管理器控制台中看到的:
我们已验证项目已构建,并且整个解决方案已构建。除了重新启动 VS2015 之外,我们已经完成 "dotnet restore" 并多次重建。我们已验证在解决方案资源管理器和包管理器控制台下拉列表中都选择了正确的默认解决方案。我们已经验证他的机器上安装了正确的 SDK。我不知道接下来要检查什么......任何时候我在添加迁移过程中失败时我都会获得足够的信息来指出我要检查什么的方向,但只是 "Build failed." 是一个相当无用的错误输出。
开发人员最终从 TFS 取消映射项目,将其删除,然后重新映射。现在对他有用了。
我有完全相同的错误,但我正在使用 Visual Studio Community 2017 Version 15.2 (26430.14) 构建 .Net Core 项目。
我有一个 ASP.NET Core MVC web 项目和一个使用 ASP.NET Core Identity 的独立安全项目。 Web 项目在 aspsettings.json 配置文件中包含连接字符串。
我还在 Visual Studio 中安装了 Bundler & Minifier 和 Web Essentials 2017 扩展,以便我可以编译、缩小和把我的资源打包放到 wwwroot.
我发现是 MSBuild 秘密下载的那两个扩展导致了这个问题,因为我有 Enable Bundle on Build 和 Enable Compile on Build上。在我禁用它之后,一切正常。
可能不是您遇到问题的原因,但值得一试。
这是因为您的解决方案中有其他项目。例如,如果您的解决方案中有两个项目,分别是项目 A 和项目 B。如果项目 A 未成功构建,则项目 B 数据迁移将失败。因此,您应该卸载项目 A 并再次将迁移添加到项目 B。
我认为这不是一个好的答案,但希望能有所帮助。
我遇到了完全相同的问题 (.NET Core 2.0.1)。
有时重建项目会有帮助。
我在2 Visual Studio秒打开项目时也遇到了这个问题。
关闭一个 Visual Studio 修复了错误。
有过同样的情况。 这有助于:
打开包管理器控制台
将目录更改为 Migrations 文件夹:
cd C:\YourSolution\YourProjectWithMigrations
下午输入:
dotnet ef migrations add YourMigrationName
我想当我尝试 运行 dotnet ef migrations add xyz
时我已经 运行ning 了。
最后,为了确定,我停止了当前的 运行ning 实例,然后再次 运行 以确保它被重建,再次停止它并且我能够 运行 dotnet ef migrations add
命令
在我的情况下是错误
namespace aspnetcore does not exist .. are you missing a reference?
我已经通过将 -v(或 --verbose)标志添加到 dotnet ef 命令来解决这个问题。
在 Visual Studio 中打开输出 window 并检查您的构建日志。就我而言,尽管我当前的配置是 Release
,但 Add-Migration
在 Debug
中构建了项目,但出现了错误。出于某种原因,除 Output window 之外,VS 没有在任何地方显示错误。
我认为下面的 2 个命令总是有效(如果你 运行 它们在项目的文件夹中)
- dotnet ef 迁移添加(来自 ApplicationDbContextDBContext 的数据库对象)
- dotnet ef 数据库更新
可能是因为你没有在YOUR_PROJECT.csproj
中添加这个<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.Dotnet" Version="2.0.2" />
您的代码中很可能存在错误。首先尝试重建并更正所有错误。
发生在我身上,我正在尝试回滚迁移,但我还没有更正代码中的错误。
我有同样的错误。我所做的是,我纠正了代码中的错误,并重建了项目。然后我 运行 ms-dos 命令成功了。
先尝试保存 DataContext.cs。它对我有用。
尝试以下步骤:
清洗溶液。
分别构建每个项目。
解决任何发现的错误(有时,VS 不会显示错误,直到您单独构建它)。
然后再次尝试运行迁移。
我建议添加 -v
以获得更多信息。
在我的示例中,我必须添加
<LangVersion>latest</LangVersion>
到我的项目中,因为其中一些项目中缺少这一点。
刚刚进入这个问题。 就我而言,我正在调试我的代码,这导致我的迁移失败。
由于在 Visual Studio 代码中,调试器是如此低调(只有一个小酒吧),直到我阅读了一些问题并决定看起来更好时,我才意识到这一点。
就我而言,应用程序是 运行。显然,它需要停止。总有奇怪的错误消息。
确保你在里面有代码生成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>
我遇到了同样的错误。我通过停止项目构建来修复它。之后一切正常。
我遇到了同样的错误。构建过程中没有错误。我关闭了 Visual Studio 并且它起作用了。
原来这也可能是由 BuildEvents 引起的。对我来说,我在那里引用 $(SolutionDir) 。对于常规构建,此变量具有值,但 运行 dotnet * 命令显然是在项目级别完成的。 $(SolutionDir) 在详细模式 (-v) 下的结果类似于 Undefined。这对我来说似乎是个错误。
1:我收到错误: PM> 添加迁移 "InitialDB" 构建失败。 2:The 错误是缺少“(”。我更正了它,错误消失了。
所以你可以在输出中看到错误。错误是因为代码问题。
当我尝试 运行 add-migration
时遇到同样的错误。请确保您的代码中没有任何语法错误。
我的代码中存在语法错误,修复后,我能够 运行 add-migration
.
我在 运行 时遇到了同样的问题:
dotnet ef migrations add InitialCreate
所以我所做的是尝试使用以下方法构建项目:
dotnet build
命令。
它抛出一个错误:例如 Startup.cs(20,27): error CS0103: bla bla
。您可以通过追踪找到代码中的错误。
然后我重构了代码 运行:
dotnet build
再一次
检查任何错误,直到没有错误并且构建成功。
然后运行:
dotnet ef migrations add InitialCreate
然后构建成功。
在我的例子中,它失败了,因为解决方案中的一个不相关的项目失败了。卸载该项目,运行 命令再次生效。
在我的例子中,这是因为我在某处出错了。就像在数据库配置文件中缺少昏迷,所以 VS 直到构建
才抛出异常所以只需尝试 运行 您的代码...
我在使用 Visual Studio 2019 版本 16.5.0 时遇到了这个问题。
最后怎么解决的:
- 关闭Visual Studio;
- 重新打开 Visual Studio;
- 如果您有多个项目并且 select
Rebuild Solution
. ,请确保右键单击解决方案
请注意,我之前尝试执行 Rebuild Solution
,但没有发现错误。所以关闭VS重新打开很重要
然后显示导致 add-migration
命令失败并显示 Build failed
消息的错误。
这是因为从解决方案中删除项目或 class 库并在删除同名项目后添加项目。 最好的办法是删除解决方案文件并将项目添加到 it.this 对我有用 (我使用 vsCode 做到了这一点)
我也有同样的错误。我试过 -v 但没有。然后我意识到我已经改变了模型太多以至于控制器显示错误。
一旦我修复了控制器中的错误,它就可以工作了。
我猜它可能有很多可能性。就我而言,这是由于包版本不平衡
我有
<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"/>
然后它运行良好
在我的例子中,添加包 Microsoft.EntityFrameworkCore.Tools 修复问题
就我而言,我有几个这样的错误:
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 和 运行 命令。
在我的例子中,重建 Project 工作正常。 运行 该项目也运行良好并且执行了一些端点。
但仍然在更新数据库上它会说“构建失败”而没有任何说明,即使在命令中添加了 -Verbose。
最后碰巧单元测试项目中有一个错误会(由于某种原因)导致“构建失败”错误。
由于我在同一个 解决方案 下有多个项目,我将只重建我当前正在处理的项目。看来,当发生此错误时,最好重建整个 Solution 并解决错误...
只有清除 Visual Studio 缓存对我有帮助
- 关闭 Visual Studio(确保 devenv.exe 不在任务管理器中)
- 删除 %USERPROFILE%\AppData\Local\Microsoft\VisualStudio.0\ComponentModelCache 目录。
- 重启Visual Studio。您可能还需要清理用户的临时文件夹。它通常位于 %USERPROFILE%\AppData\Local\Temp. 下
我遇到了同样的问题。如果您选择了 .NET Core 工具收集使用数据以进行 Windows 改进,那么您可以使用 dotnet build
来解决 missing/persisting 问题。
在我的例子中,缺少的是 sonarqube 依赖项。当我在 Rider 中构建项目时,它成功了,但在从终端触发构建(dotnet 构建)时失败了。这是由 Rider 中的错误设置引起的。解决方案是在终端中触发声纳扫描。