问题描述
在使用VSTS进行构建时,遇到了一个问题。他的项目使用的是Asp.Net Core 2.1.1,所以他需要强制运行时使用2.1.1版本。当他添加了EF Core 2.1.1的包(SqlServer、Design和Tools)后,项目在本地运行正常。但是在使用VSTS的Hosted VS2017进行构建时,构建过程失败了,因为它无法解决依赖冲突导致的包恢复问题。用户已经安装了所需的包,但构建仍然失败。
用户想知道是否有其他解决方法,而不是通过多次构建来发现所有需要作为依赖项的包。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
根据用户的描述,您可以尝试在构建定义中明确指定版本号来解决此问题。以下是具体步骤:
1. 打开VSTS中的构建定义。
2. 在构建定义中找到包恢复的步骤。
3. 在步骤中添加一个命令行任务。
4. 在命令行任务中,使用以下命令指定版本号:
dotnet restore --runtime-version 2.1.1
- 保存并触发构建。
这样,您就明确指定了运行时版本为2.1.1,可以解决依赖冲突导致的包恢复问题。
方案2
根据最佳回答,您可以尝试在构建定义中明确指定EF Core的版本号。以下是具体步骤:
1. 打开VSTS中的构建定义。
2. 在构建定义中找到包恢复的步骤。
3. 在步骤中添加一个命令行任务。
4. 在命令行任务中,使用以下命令指定EF Core的版本号:
dotnet add package Microsoft.EntityFrameworkCore --version 2.1.301
- 保存并触发构建。
这样,您就明确指定了EF Core的版本号为2.1.301,可以解决依赖冲突导致的包恢复问题。
方案3
如果以上两种方案都无法解决您的问题,您可以尝试手动删除项目文件中的所有EF Core包引用,并重新添加正确的版本引用。以下是具体步骤:
1. 打开项目文件(.csproj)。
2. 删除所有与EF Core相关的包引用。
3. 添加正确版本的EF Core包引用。根据您的需求,可以使用以下命令添加EF Core的包引用:
dotnet add package Microsoft.EntityFrameworkCore --version 2.1.1
dotnet add package Microsoft.EntityFrameworkCore.Design --version 2.1.1
dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 2.1.1
dotnet add package Microsoft.EntityFrameworkCore.Tools --version 2.1.1
- 保存项目文件并重新触发构建。
这样,您就手动指定了正确的EF Core版本引用,可以解决依赖冲突导致的包恢复问题。
以上是几种可能的解决方案,您可以根据您的具体情况选择适合您的方法来解决问题。希望对您有帮助!