我想在Visual Studio 2017中使用C#8.0(尤其是范围和不可为空的引用类型)。可能吗?
您可以在vs2017中使用Microsoft. Net. Compilers. Toolset而不是Microsoft. Net. Comp的
该软件包旨在替代Microsoft。net Compilers(这是一个仅适用于Windows的软件包)和Microsoft.NETCore.Compilers。这些软件包现在已被弃用,将来会被删除。
该包需要MSBuild 15.0和。NET Destkop 4.7.2或。网络核心2.1
软件包版本:
与vs2019相比,包版本映射了c#8支持的能力。
如何使用
将这些行添加到. csproj
xml prettyprint-override"> <PropertyGroup>
//....
<LangVersion>8.0</LangVersion>
<Nullable>enable</Nullable> <!-- to support nullable reference type -->
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Net.Compilers.Toolset" Version="3.3.1" PrivateAssets="All" />
</ItemGroup>
补充series0ne关于主要发布版本的评论:新的VS通常会发布新的C#版本,这是事实。然而,在过去的经验中,有可能将以前版本的VS升级到编译器较新版本的C#代码,主要是通过升级“Microsoft。Net编译器的Nuget包。你可以参考这篇文章获得更多信息。如何在Visual Studio 2015中使用c#7?
展望未来,微软希望将C#语言版本与框架版本比过去更紧密地联系在一起。他们真的只希望您将C#8与. NET Core 3. x和. NET Standard 2.1项目一起使用,这意味着使用Visual Studio 2019。我对C#8是否支持的回答。NET Framework?有所有血淋淋的细节。
但是,如果您真的愿意,您现在可以在Visual Studio 2017中使用C#8,方法是使用将C#7引入Visual Studio 2015的相同技巧:将最新版本的Microsoft. Net. Comp的Nuget包安装到项目中。它可以工作,但是VS 2017当然不知道C#8语法,所以它看起来不太漂亮。这是一个屏幕截图,显示VS 2017能够使用可空引用类型和静态本地方法(两者都是C#8功能)编译一个小型测试库:
这是。csproj和代码如果你想试试:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net452</TargetFrameworks>
<LangVersion>8.0</LangVersion>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Net.Compilers" Version="3.3.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
-
using System;
namespace CSharp8Test
{
public class Class1
{
public string? NullableString { get; } = "Test";
public static void Test()
{
Console.WriteLine(Test2());
static int Test2() => 5;
}
}
}
问题内容: 在新的Go语言中,如何调用C 代码?换句话说,如何包装我的C 类并在Go中使用它们? 问题答案: 更新: 我已经成功地将一个小型测试C ++类与Go链接在一起 如果您使用C接口包装C ++代码,则应该可以使用cgo调用您的库(请参阅中的gmp示例)。 我不确定C ++中的类概念是否真的可以在Go中表达,因为它没有继承。 这是一个例子: 我有一个C ++类定义为: 我想在Go中使用。我将
问题内容: 我已经用C ++实现了一个类。我想将其与Python一起使用。 请提出逐步方法,并详细说明每个步骤。 这样的东西 现在,在Python中 请提出建议。我该怎么办?注意:我想知道手动的方法。我不希望任何第三方库依赖。 问题答案: 查看Boost.Python。这是一个用C ++编写python模块的库。 还要研究SWIG,它也可以处理其他脚本语言的模块。我过去曾使用它来为我的课程编写模块
我试图在MongoDB中保存ImmutableArray(System.Collections.Immutable)。 我试过MongoDB。Immutable,但它仅限于Immutable包的旧版本,不支持ImmutableArray。 我试图创建一个自定义序列化程序使用IBsonSeriazer和IBsonSeriazationProviderSeriazerBase没有成功。 或者 第一个解
问题内容: 在C ++程序中使用Redis数据库的最佳方法是什么? 问题答案: 使用C绑定库?似乎在任何地方都没有C ++包装器。
本文向大家介绍如何在C#中使用注册表,包括了如何在C#中使用注册表的使用技巧和注意事项,需要的朋友参考一下 一、什么是注册表 注册表是Microsoft Windows操作系统和其应用程序中的一个重要的层次型数据库,用于存储系统和应用程序的设置信息。由键(key,或称“项”)、子键(subkey,子项)和值项(value)构成。一个键就是树状数据结构中的一个节点,而子键就是这个节点
本文向大家介绍如何在C#中使用OpenCV(GOCW使用教程),包括了如何在C#中使用OpenCV(GOCW使用教程)的使用技巧和注意事项,需要的朋友参考一下 1、什么是GOCW 为了解决在Csharp下编写OpenCV程序的问题,我做过比较深入的研究,并且实现了高效可用的方法GreenOpenCsharpWrapper(GOCW)。通过这种方法,能够分离界面和算法业务,高效率完成算法