恢复 .net core 2.0 应用程序升级到 2.1 时出错
Error restoring .net core 2.0 app upgraded to 2.1
尝试使用 VSTS 构建我们从 2.0 升级到 2.1 的 .NET 核心应用程序。
当我使用 SDK 版本 2.1.301 在本地构建时一切正常。但是 VSTS 构建失败。
所以我有一个 global.json 添加到失败的项目的根目录,但这并没有解决问题:
{
"sdk": {
"version": "2.1.301"
}
}
我们得到的错误是这样的:
2018-06-29T10:40:44.2112663Z 2018-06-29T10:40:44.2112824Z
"D:\a\s\FooApp.Tests\FooApp.Tests.csproj" (Restore target) (1) ->
2018-06-29T10:40:44.2113005Z (Restore target) ->
2018-06-29T10:40:44.2113230Z D:\a\s\FooApp\FooApp.csproj :
error NU1107: Version conflict detected for
Microsoft.AspNetCore.Razor.Language. Reference the package directly
from the project to resolve this issue.
[D:\a\s\FooApp.Tests\FooApp.Tests.csproj]
2018-06-29T10:40:44.2113815Z D:\a\s\FooApp\FooApp.csproj :
error NU1107: FooApp ->
Microsoft.VisualStudio.Web.CodeGeneration.Design 2.1.1 ->
Microsoft.VisualStudio.Web.CodeGenerators.Mvc 2.1.1 ->
Microsoft.VisualStudio.Web.CodeGeneration 2.1.1 ->
Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore 2.1.1 ->
Microsoft.VisualStudio.Web.CodeGeneration.Core 2.1.1 ->
Microsoft.VisualStudio.Web.CodeGeneration.Templating 2.1.1 ->
Microsoft.AspNetCore.Razor.Language (>= 2.1.1)
[D:\a\s\FooApp.Tests\FooApp.Tests.csproj]
2018-06-29T10:40:44.2114327Z D:\a\s\FooApp\FooApp.csproj :
error NU1107: FooApp -> Microsoft.AspNetCore.App 2.1.0 ->
Microsoft.AspNetCore.Razor.Language (= 2.1.0).
[D:\a\s\FooApp.Tests\FooApp.Tests.csproj]
2018-06-29T10:40:44.2114518Z
这是MyOwnApp.csproj
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Models\**" />
<Content Remove="Models\**" />
<EmbeddedResource Remove="Models\**" />
<None Remove="Models\**" />
</ItemGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="2.6.0" />
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.Azure.ServiceBus" Version="3.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.1" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" />
<PackageReference Include="Serilog.AspNetCore" Version="2.1.1" />
<PackageReference Include="Serilog.Settings.Configuration" Version="2.6.1" />
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
<PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />
<PackageReference Include="Serilog.Sinks.MSSqlServerCore" Version="1.1.0" />
<PackageReference Include="Serilog.Sinks.RollingFile" Version="3.3.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MyOwnApp\MyOwnApp.csproj" />
</ItemGroup>
</Project>
TFS 服务器上很可能没有安装 SDK 2.1.301 SDK。 2.1.301对应.NET Core 2.1.1
包中包含对 :
的引用
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" />
如错误所述,此软件包最终需要 Microsoft.AspNetCore.Razor.Language
的 2.1.1 版本。虽然在构建服务器上找到的 Microsoft.AspNetCore.App
包是 2.1.0.
解决方法是在服务器上安装2.1.301 SDK
更新
如果 VSTS 没有最新的 SDK 版本,可以按照显示的步骤安装它 here:
- 添加
.NET Core Tool Installer
任务作为构建过程中的第一个任务,并指定SDK版本。在这种情况下是 2.1.301
- 在它后面添加
Nuget Tool Installer
。
这些步骤应该安装正确版本的 SDK 和 NuGet
尝试使用 VSTS 构建我们从 2.0 升级到 2.1 的 .NET 核心应用程序。
当我使用 SDK 版本 2.1.301 在本地构建时一切正常。但是 VSTS 构建失败。
所以我有一个 global.json 添加到失败的项目的根目录,但这并没有解决问题:
{
"sdk": {
"version": "2.1.301"
}
}
我们得到的错误是这样的:
2018-06-29T10:40:44.2112663Z 2018-06-29T10:40:44.2112824Z
"D:\a\s\FooApp.Tests\FooApp.Tests.csproj" (Restore target) (1) -> 2018-06-29T10:40:44.2113005Z (Restore target) -> 2018-06-29T10:40:44.2113230Z D:\a\s\FooApp\FooApp.csproj : error NU1107: Version conflict detected for Microsoft.AspNetCore.Razor.Language. Reference the package directly from the project to resolve this issue. [D:\a\s\FooApp.Tests\FooApp.Tests.csproj] 2018-06-29T10:40:44.2113815Z D:\a\s\FooApp\FooApp.csproj : error NU1107: FooApp -> Microsoft.VisualStudio.Web.CodeGeneration.Design 2.1.1 -> Microsoft.VisualStudio.Web.CodeGenerators.Mvc 2.1.1 -> Microsoft.VisualStudio.Web.CodeGeneration 2.1.1 -> Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore 2.1.1 -> Microsoft.VisualStudio.Web.CodeGeneration.Core 2.1.1 -> Microsoft.VisualStudio.Web.CodeGeneration.Templating 2.1.1 -> Microsoft.AspNetCore.Razor.Language (>= 2.1.1) [D:\a\s\FooApp.Tests\FooApp.Tests.csproj] 2018-06-29T10:40:44.2114327Z D:\a\s\FooApp\FooApp.csproj : error NU1107: FooApp -> Microsoft.AspNetCore.App 2.1.0 -> Microsoft.AspNetCore.Razor.Language (= 2.1.0). [D:\a\s\FooApp.Tests\FooApp.Tests.csproj] 2018-06-29T10:40:44.2114518Z
这是MyOwnApp.csproj
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Models\**" />
<Content Remove="Models\**" />
<EmbeddedResource Remove="Models\**" />
<None Remove="Models\**" />
</ItemGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="2.6.0" />
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.Azure.ServiceBus" Version="3.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.1" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" />
<PackageReference Include="Serilog.AspNetCore" Version="2.1.1" />
<PackageReference Include="Serilog.Settings.Configuration" Version="2.6.1" />
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
<PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />
<PackageReference Include="Serilog.Sinks.MSSqlServerCore" Version="1.1.0" />
<PackageReference Include="Serilog.Sinks.RollingFile" Version="3.3.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MyOwnApp\MyOwnApp.csproj" />
</ItemGroup>
</Project>
TFS 服务器上很可能没有安装 SDK 2.1.301 SDK。 2.1.301对应.NET Core 2.1.1
包中包含对 :
的引用<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" />
如错误所述,此软件包最终需要 Microsoft.AspNetCore.Razor.Language
的 2.1.1 版本。虽然在构建服务器上找到的 Microsoft.AspNetCore.App
包是 2.1.0.
解决方法是在服务器上安装2.1.301 SDK
更新
如果 VSTS 没有最新的 SDK 版本,可以按照显示的步骤安装它 here:
- 添加
.NET Core Tool Installer
任务作为构建过程中的第一个任务,并指定SDK版本。在这种情况下是2.1.301
- 在它后面添加
Nuget Tool Installer
。
这些步骤应该安装正确版本的 SDK 和 NuGet