如何解决.net Core构建错误NETDSDK1061和警告MSB3277

时间:2018-09-26 12:44:04

标签: c# asp.net-core .net-core entity-framework-core npgsql

我遇到了一个问题,就是我的AspNetCore.App-metapackage引用的EntityFrameworkCore(2.1.2)版本低于EfCore提供程序的软件包(NpgSql,引用2.1.3)。结果是警告MSB3277(here is the question)。快速解决方案是可接受的答案。

另一个答案指出,我使用的Microsoft.AspNetCore.App软件包(当时的版本为2.1.1)低于上一个稳定版本(2.1.4)的版本。无法更改软件包的版本(请参见下图)。

enter image description here

在类库项目中,Microsoft.NETCore.App遇到了相同的问题

我什至没有注意到我使用了比可用的旧的元软件包。直到今天,我始终检查NuGet软件包管理器中是否有任何更新。我已经使用了默认的项目模板,并始终安装了最新的.NetCore SDK,以为这就足够了。不是。

在调查了此问题之后,我发现,可以强制我的项目使用带有包管理器控制台( function sendRecipientMsg($dataset, $sendCounter, $recipients){ $template = $dataset['template']; Mail::queue($template, $dataset, function($message) use($dataset, $recipients){ $message->to('piggy@teamprema.co.nz','MissPiggy'); $message->subject('Have a good day'); $message->from('us@prema.co.nz', 'Mike and Stephie'); $message->sender('us@prema.co.nz', 'Mike and Stephie'); trace_log('$message'); $message->cc($address, $name = null); $message->bcc('systems@safe.org.nz', 'SAFE Campaigns Feedlots ECards'); }); } Install-Package Microsoft.NETCore.App -Version 2.1.4)的特定.NETCore.App或AspNetCore.App元软件包。

该命令执行完后,我发生了构建错误(Install-Package Microsoft.AspNetCore.App -Version 2.1.4)。

3 个答案:

答案 0 :(得分:9)

我试图在该问题上寻求任何帮助,找到了一些看起来很相似但实际上却有所不同的github问题(例如this one)。 我找到了descriptive doc,但这并没有真正帮助我。

我从Rick Strahl找到了pretty helpful blogpost,解释了可用的软件包以及每个软件包的用途。开始是一件好事。

这是我的解决方案:

步骤1: 在程序包管理器控制台中执行Install-Package Microsoft.AspNetCore.App -Version [VersionOfYourChoice]和/或执行Install-Package Microsoft.NETCore.App -Version [VersionOfYourChoice]

步骤2: 如下所示编辑.csproj:

<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RuntimeFrameworkVersion>2.1.4</RuntimeFrameworkVersion>  <- add this line
    <!--<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> --> <- alternative
</PropertyGroup>

另一个要点:如果您使用Win10,请帮自己一个忙,检查已安装的.Net Core SDK /运行时等。卸载不需要的每个SDK / Runtime (再次:检查Ricks的博客文章)。 您只需要在一个项目中当前定位的对象。

例如:如果您正在开发一个.NETCore项目,而您只是使用2.1.4版进行了这两个步骤-撰写本文时,您只需要Microsoft .NET Core SDK 2.1.402。为了稍微整理一下,我卸载了每个.NET Core SDK / Runtimes / Packages,并从here中获取了最新版本。

注意:我跟随this blogpost from Jeff Atwood回答了一个问题,这花了我很长时间才能解决。希望对您有帮助...

编辑 .NET Core 2.2 的好消息:您只需按如下所示编辑.csproj:

<PropertyGroup>
  <TargetFramework>netcoreapp2.2</TargetFramework>
  <RuntimeFrameworkVersion>2.2.0</RuntimeFrameworkVersion>
</PropertyGroup>

编辑: 元软件包不应再手动更新。 This is the recommendation for updating AspNetCore。元软件包的版本取决于安装的SDK。

答案 1 :(得分:1)

将此行添加到.csproj文件后,我仍然看到此问题。

<RuntimeFrameworkVersion>2.1.5</RuntimeFrameworkVersion>

将Version属性添加到Microsoft.AspNetCore.App包参考中可以为我解决此问题。我改变了这个:

<PackageReference Include="Microsoft.AspNetCore.App" />

对此:

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.5" />

@Joshit回答中的步骤1可能会自动执行此操作,但是我已经拥有最新版本的Microsoft.AspNetCore.App。

答案 2 :(得分:0)

这个问题对我来说很棘手。我做了@Joshit的答案中的步骤,错误仍然存​​在。然后我做了:

  • 构建>清洁解决方案
  • 构建>构建解决方案

现在可以正常工作了。

这有助于了解您的SDK版本,可在以下位置找到它: C:\ Program Files \ dotnet \ sdk

您也可以在发布时遇到此问题。将此行添加到publish_profile.pubxml文件可能会有所帮助:

<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeFrameworkVersion>2.1.0</RuntimeFrameworkVersion>

将2.1.0替换为2.1.4或您正在使用的任何内容。