Visual Studio 如何选取当前框架?

问题描述 投票:0回答:1

我开始了一个

net6.0
项目。并决定提供
netstandard2.0
作为旧支持版本的内部 nuget 输出。

在 .proj 文件中将

<TargetFramework>net6.0</TargetFramework>
替换为
<TargetFrameworks>net6.0;netstandard2.0</TargetFrameworks>
。现在有这个

问题在于可空引用类型的使用。

net6.0
netstandard2.0
使用不同的语言版本

我知道我必须做其中之一

  • 降级net6.0的语言
  • 使用某些公共文件和其他单独文件创建单独的项目
  • 使用条件编译

我尝试了条件编译

并且显示当前活动框架是

netstandard2.0
。我就想知道,怎么改变呢?我在项目级别的“条件编译符号”中添加了符号,用于“调试和net6.0自定义符号”。我能够以这种方式切换。现在,我设置符号以使
netstandard2.0
处于活动状态。我重建了我所看到的 - 它编译为
bin\Debug\net6.0
bin\Debug\netstandard2.0
中没有任何内容。我也收到错误 -

错误 CS8630 无效的“可空”值:C# 7.3 的“启用”。请使用语言版本“8.0”或更高版本。项目名称 (net6.0) C:\DEV\Components\projectName\CSC 1 Active

没有一个文件内部有错误。所有参考资料/包似乎都解决得很好。我删除了代码文件中所有特定于 net6.0 的部分。这里需要一些建议。谢谢

c# visual-studio .net-6.0 .net-standard-2.0 multitargeting
1个回答
0
投票

在多目标项目中,VS 允许在智能感知的目标之间切换 - 文本编辑器的左上角有一个下拉菜单(我使用 .NET 7,因为我没有安装 .NET 6):

对于 JetBrains Rider 用户,通过选择文本编辑器底部的框架也可以实现相同的效果:

还在我的小重现中,我将以下内容添加到 .csproj:

<PropertyGroup Condition="'$(TargetFramework)' == 'net7.0'">
    <Nullable>enable</Nullable>
</PropertyGroup>

对于可为空的情况,您也可以内联执行:

<Nullable Condition="'$(TargetFramework)' == 'net7.0'">disable</Nullable>
© www.soinside.com 2019 - 2024. All rights reserved.