Visual Studio 2017项目引用了旧版本的Microsoft.AspNetCore.App

4
我使用的是 .Net Core 2.1.1,最近将 SDK 升级到了 2.1.401 (.Net Core Runtime 2.1.3)。当我创建一个新项目时,在 Dependencies > SDK 下的 Microsoft.AspNetCore.App 版本仍然是 2.1.1。查看 Dependencies > NuGet 的属性后,发现该软件包被引用自 "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.app\2.1.1"
我尝试使用 NuGet 包管理器安装 Package 2.1.3,并下载了所有依赖项,尽管我已经在我的计算机上安装了 2.1.3。
如何强制现有/新项目使用来自 SDK 安装的最新版本软件包?

你说得对!我已经检查过了,对我也一样。可能这是一个 bug,请在此处报告:https://github.com/aspnet/Home/issues - TanvirArjel
感谢您的建议,FYI..这是我提出的问题链接:https://github.com/dotnet/core/issues/1895 - Praveen Rai
2个回答

1

您不需要在项目中手动更新Microsoft.AspNetCore.App的版本。2.1.1是完全可以的。您的应用程序将在安装在计算机上的最新2.1.*框架上运行。

如果您发布一个自包含应用程序,工具将仅在自包含构建时自动切换到已知的最新版本2.1.*。(-r win-x64参数)

这可能会在2.2或3.0版本中更改,请阅读/遵循this GitHub issue and thread以获取更多信息。


感谢分享讨论链接。我接受我可以使用2.1.1版本,但我不明白的是,为什么当我明确指定包的版本时,VS会引用NuGetFallBack文件夹中的包而不是SDK中的包。顺便说一下,从讨论中我了解到,在.csproj文件中提供包的显式版本是目前的解决方法。我是对的吗? - Praveen Rai
现在我认为最好完全删除2.1的Version =""属性/元数据,看看他们是否在2.2或3.0(更可能是3.0)中实现更改。 - Martin Ullrich
“共享框架”的概念是运行时提供实现,但您只需针对合同进行编译。合同不应更改(绝不能更改)在补丁发布之间,您的应用程序将在最新可用的补丁上运行。仅对于自包含应用程序,参考资料很重要(除了编译时引用,它还会拉取实现),但现在可以通过SDK进行管理(“最新已知的补丁发布”)。 - Martin Ullrich
现在很明显这是一个与AspNet讨论的问题,是否使用Version已经成为主观决定。我同意你的看法,目前更新项目并不重要,因此将删除Version。但是,任何寻求自包含部署的人可能需要考虑使用Version属性。感谢澄清! - Praveen Rai

0

这是一个已经被报告的错误,但现在可以采用这个解决方案。

ProjectName.csproj 文件中:

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

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

请问您是否有问题编号?如果有的话,能否分享一下?谢谢。 - Praveen Rai
将RuntimeFrameworkVersion设置为2.1.3会升级Microsoft.NETCore.App到2.1.3(在重新加载项目时)。但是Microsoft.AspNetCore.App仍然是2.1.1,将其设置为项目文件中的2.1.3会使NuGet下载2.1.3。 - Praveen Rai
@PraveenRai 好的,让我来检查一下! - user10274969
设置版本为2.1.3时,未从SDK中选择软件包,而是从Nuget下载,这不应该发生。 - Praveen Rai
耶!但这只是一个临时解决方案,因为它并没有按预期工作! - user10274969
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接