为什么针对旧版本框架时会编译 .NET 4.6 特定代码? [复制]

2023-12-21

我有一个针对旧版本 .NET 框架 (.NET 4.5.2) 的项目。我安装了 Visual Studio 2015(因此我的计算机上安装了 .NET 4.6)。我注意到,如果我使用 .NET 4.6/C# 6 中发布的 C# 语言功能,它仍然可以编译。如果我的项目的目标框架是

    public string MyExpressionBodyProperty => "1";

    //auto properties are new in C# 6
    public string MyAutoProperty { get; } = "1";

    private static void MethodThatUsesNameOf(string filename)
    {
        if (filename == null) 
        {
            //nameof was released in C# 6
            throw new ArgumentException("The file does not exist.", nameof(filename));
        }
    }

如何确保我只使用与我的目标框架版本兼容的 .NET 语言功能?


.NET Framework 版本和 C# 语言版本是不同的。 C# 6 语言功能

public string MyAutoProperty { get; } = "1";
nameof(filename)

可以由 VS 2015 编译成针对早期框架的代码。

如何确保我只使用与我的目标框架版本兼容的 .NET 语言功能?

如果您尝试使用 .NET 4.6 Framework 功能,并且您的目标是较早的框架,则会收到相应的编译器错误。

我可以将此代码部署到没有 .NET 4.6 的计算机吗?

是的,你会的。只要部署机器具有与您在 VS2015 中定位的框架兼容的框架即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么针对旧版本框架时会编译 .NET 4.6 特定代码? [复制] 的相关文章

随机推荐

  • 如何更新 Angular Array 中的现有项目(已从外部更改)?

    我是 Angular 新手 正在努力更新 Angular 数组中已从外部更改 不是通过 Angular 支持的 UI 的现有项目 这是用例 我的网页是通过服务器端调用填充的 我将数组加载到 Angular 中并显示在列表上 现在 如果服务器
  • 采访中的任务。我们该如何解决呢?

    以这种方式转换字符串 let initialString atttbcdddd result must be like this at3bcd4 但重复次数必须大于2 例如 如果我们有 aa 结果将是 aa 但如果我们有 aaa 结果将是
  • 使用模式中的数组复制到 postgres 中?

    我正在使用 Ruby Rails Postgres 我的表看起来像这样 架构方面 CREATE TABLE my table name my num double precision NOT NULL my string arr chara
  • BST 中的第二个最大值

    这是一道面试题 找到 BST 中的第二个最大值 最大元素是 BST 中最右边的叶子 第二个最大值是其父级或其左子级 所以解决方案是遍历 BST 找到最右边的叶子并检查其父节点和左子节点 是否有意义 不 那是错误的 考虑这个 BST 137
  •  内容不收缩的 Flex 项目[重复]                
                

    这个问题在这里已经有答案了 我有一个需要握住的布局
  • 手动安装 Ruby 1.8.7(和其他东西)

    我不想再依赖一键安装程序 我想学习如何手动安装 Ruby 有这方面的资源吗 在此处下载 Ruby 1 8 7 的 Windows 二进制文件 http www ruby lang org en downloads http www ruby
  • 关于多核CPU的x86 LOCK问题

    当执行 LOCK 后面的指令时 x86 ASM LOCK 命令前缀是否会导致所有内核冻结 我在一篇博客文章中读到了这一点 但它没有意义 我找不到任何东西表明这是否属实 这是关于锁定该地址的内存总线 Intel 64 和 IA 32 架构软件
  • Gmail API:如何获取访问令牌?

    我正在测试邮箱API https developers google com gmail api 到目前为止我已经做了以下事情 我已经在中创建了该项目谷歌开发者控制台 https console developers google com
  • capybara:用终止输入键填写表单字段值

    我正在测试条形码阅读器输入 它的行为类似于键盘 但用回车键字符终止每个条形码 我的 javascript 检测到输入键并响应 backbone js 应用程序 如何使用具有终止输入键值的字符串 填写 表单字段 我的测试堆栈是cucumber
  • Windows 窗体上的甘特图控件 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • AsyncPostBackTrigger 在我的应用程序中不起作用

    我遇到一个有趣的问题 我们正在使用母版页运行一个网站 在其中一个页面中 我需要创建一个更新面板 该面板将在完成时显示组 SSID 因此 在内容占位符之一中 我将其放入
  • Unicode“退格键”U+0008 的用途是什么?

    Unicode 字符 BACKSPACE U 0008 在编程中的用途是什么 它可以用于哪些应用 On output to a terminal it typically moves the cursor one position to t
  • Pandas:将具有重复行名称的数据重塑为列

    我有一个类似这样的数据集 显示第一行 Sample Detector Cq P 1 106 23 53152 P 1 106 23 152458 P 1 106 23 685083 P 1 135 24 465698 P 1 135 23
  • 如何规避第 3 方 https 网站的同源政策?

    我有一个http 需要访问第三方 JSON API 的站点 该 API 公开在https 地点 我已读完规避同源策略的方法 https stackoverflow com questions 3076414 ways to circumve
  • 从包内读取 SSIS 包文件名(包部署)

    我使用包部署模型在 Visual Studio SSDT 2012 中创建了一个 SSIS 包 有没有办法从包内以只读变量或属性的形式访问包的文件名 我没有看到它被列为系统变量 有什么办法可以通过脚本任务吗 我认为您需要检查 System
  • 运行线程时,旋转变换在重绘中无法正常工作

    我一直在努力使这个程序正常工作 尽管我似乎找不到问题所在 这个程序由以下两个类组成 不多也不少 基本上应该在绘图区域中每次单击时绘制一个点 并在第三次单击时连接所有点 我仍然需要努力让它变得更漂亮 更准确 但这部分是有效的 不起作用的是应该
  • Firebase 时间戳返回错误日期 - Javascript

    我正在尝试从 firestore 获取时间戳值 使用 Firebase 函数 并且我已经使用时间戳的 toDate 方法和矩库在本地成功完成了此操作 moment doc data EndDate toDate 但是 当我将代码部署到 fi
  • UIAlertViewDelegate 和更多警报窗口

    我有实现 UIAlertViewDelegate 的控制器 在实施中我有 void alertView UIAlertView alertView clickedButtonAtIndex NSInteger buttonIndex 方法
  • jQuery 远程验证与服务器生成的错误消息

    我正在使用 Validation jQuery 插件来进行一些验证 我有一项服务现在返回 真 和 假 一切都很好 但是 我使用的错误消息是 该名称已被占用 我希望错误消息是 That name is already a href item
  • 为什么针对旧版本框架时会编译 .NET 4.6 特定代码? [复制]

    这个问题在这里已经有答案了 我有一个针对旧版本 NET 框架 NET 4 5 2 的项目 我安装了 Visual Studio 2015 因此我的计算机上安装了 NET 4 6 我注意到 如果我使用 NET 4 6 C 6 中发布的 C 语