构建一个 net5.0 目标应用程序,它可以 运行 在 net6.0 运行 时间
Building a net5.0 targeted app which can run on net6.0 runtime
我之前认为 net6.0 运行time 是向后兼容的,因为 net5.0 应用程序会 运行 按原样,但这不是我在测试中看到的.我的开发系统使用的是VS2019,所以不支持net6.0 SDK。我尝试手动将 TargetFramework 标记转换为 TargetFrameworks 并添加 net5.0;net6.0,但它无法构建。我想要某种指示 5 或更高版本的 net5.0+ 标签,但我也找不到。
但是为什么TargetFramework 设置为net5.0 部署到只有net6.0 的系统时不能工作运行?假设我的应用程序是在 net6.0 存在之前构建的。我不想在 net6.0 发布时发布新包。这是否需要客户无限期安装 net5.0 以继续支持我的应用程序?
我觉得我遗漏了一些简单的东西,但经过几个小时的阅读,我离弄清楚它还差得很远。
我想我终于明白了。将 RollForward 添加到 .csproj 似乎是必要的成分:
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<RollForward>Major</RollForward>
</PropertyGroup>
我之前曾尝试将 RollForward 添加到 app.runtimeconfig.json 文件中,但这似乎没有任何效果。我想知道在我的情况下,如果它可能根本不查看那些 运行timeconfig 文件,我正在做一个依赖于“单个文件”框架的已发布 exe。不确定,但至少我现在有解决方案。我只在测试机器上安装了 6.0.2 运行time,它允许 net5.0 构建的二进制文件 运行.
我之前认为 net6.0 运行time 是向后兼容的,因为 net5.0 应用程序会 运行 按原样,但这不是我在测试中看到的.我的开发系统使用的是VS2019,所以不支持net6.0 SDK。我尝试手动将 TargetFramework 标记转换为 TargetFrameworks 并添加 net5.0;net6.0,但它无法构建。我想要某种指示 5 或更高版本的 net5.0+ 标签,但我也找不到。
但是为什么TargetFramework 设置为net5.0 部署到只有net6.0 的系统时不能工作运行?假设我的应用程序是在 net6.0 存在之前构建的。我不想在 net6.0 发布时发布新包。这是否需要客户无限期安装 net5.0 以继续支持我的应用程序?
我觉得我遗漏了一些简单的东西,但经过几个小时的阅读,我离弄清楚它还差得很远。
我想我终于明白了。将 RollForward 添加到 .csproj 似乎是必要的成分:
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<RollForward>Major</RollForward>
</PropertyGroup>
我之前曾尝试将 RollForward 添加到 app.runtimeconfig.json 文件中,但这似乎没有任何效果。我想知道在我的情况下,如果它可能根本不查看那些 运行timeconfig 文件,我正在做一个依赖于“单个文件”框架的已发布 exe。不确定,但至少我现在有解决方案。我只在测试机器上安装了 6.0.2 运行time,它允许 net5.0 构建的二进制文件 运行.