做设计应该看哪些网站,公司建立网站流程图,智林东莞网站建设公司,wordpress自带有用参数前言随着 .NET Core 3.1 的第二个预览版本发布#xff0c;微软正式将 C/CLI 移植到 .NET Core 上#xff0c;从此可以使用 C 编写 .NET Core 的程序了。由于目前仅有 MSVC 支持编译此类混合代码#xff0c;并且由于涉及到非托管代码#xff0c;因此 C/CLI 目前不能跨平台微软正式将 C/CLI 移植到 .NET Core 上从此可以使用 C 编写 .NET Core 的程序了。由于目前仅有 MSVC 支持编译此类混合代码并且由于涉及到非托管代码因此 C/CLI 目前不能跨平台只支持 Windows。如果需要跨平台除了微软的工作之外还另外需要 gcc/clang 大量跟进工作量较大且进度不可控目前微软暂无使 C/CLI 跨平台的计划。先决条件Visual Studio 2019 16.4 preview 3.NET Core SDK 3.1 preview 2开启方法运行 Visual Studio Installer安装“使用 C 的桌面开发” 和 “.NET Core 跨平台开发” 工作负载然后再在单个组件中勾选“对 v142 生成工具 (14.24) 的 C/CLI 支持”。等待安装完毕启动 Visual Studio新建项目的时候即可看见两个新增的项目模板CLR Class Library (.NET Core)CLR Empty Project (.NET Core)第一个项目我们选择 CLR Empty Project (.NET Core) 创建我们的第一个 C/CLI 项目然后在右侧解决方案管理器的源文件(Source Files) 处右键添加 C 源文件 main.cpp。然后我们即可使用 C 编写 .NET Core 程序。添加以下代码运行程序输入 hello world 后回车可以看到我们成功的运行了程序并且完成了 C 代码与 .NET Core 的无缝交互。注意点托管堆对象的创建使用 gcnew而不是 new托管堆对象指针的类型为 T^而不是 T*以上述代码为例str_managed 的类型为 System::String^。得益于 C 11 开始有的类型自动推导我们可以直接使用 auto 代替显示类型声明类似 C# 中的 var。使用 :: 代替 . 访问 namespace 和 class/struct使用 - 代替 . 访问对象中的成员。使用 ref class/ref struct 定义 .NET 引用类型使用 value class/value struct 定义 .NET 值类型。使用 interface class/interface struct 定义接口。使用 property 定义属性。C/CLI 项目可以引用任何的 C 项目或动态链接库但是要确保架构相同即你不能用 x86 的配置引用 x64 架构下的非托管代码。添加项目引用并使用对于引用 C 代码在此不进行赘述使用方式和正常的 C 项目没有任何区别。因此在这里只说如何引用 .NET 程序集。我们可以直接添加对 .NET Standard/.NET Core library 的引用。如果出现无法使用 nuget 包管理器安装的情况可以手动下载对应的 .NET 程序集 dll 然后添加到项目引用当中。这里以 Newtonsoft.Json 为例。首先添加引用然后我们就能使用啦然后我们编写一个 .NET 类型为了展示的更完整我们采用完整的属性书写方法而不是自动属性。然后我们构建一段 json 字符串试试用 Newtonsoft.Json 解序列化。运行输出后记 虽然 C/CLI 暂时不能跨平台但是对 .NET Core 的支持极大的丰富了 .NET Core 的适用范围可以用于编写高性能的 C 程序的同时享受来自 C 和 .NET Core/.NET Standard 的全部生态。对于编写 Windows 程序C/CLI 绝对值得一试。而关于跨平台的问题说不定后面的版本微软就支持了呢要知道两年前 C/CLI 在 .NET Core 上运行微软给的回复也是“没有计划”然而如今却顺利的完整支持了。对于 C/CLI 的其他地方可以参考微软官方文档内容十分丰富由于中文文档存在部分机器翻译建议有能力的朋友直接阅读英文文档避免机器翻译带来的错误https://docs.microsoft.com/zh-cn/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp?viewvs-2019参考文献https://devblogs.microsoft.com/dotnet/announcing-net-core-3-1-preview-2/https://devblogs.microsoft.com/cppblog/an-update-on-cpp-cli-and-dotnet-core/https://docs.microsoft.com/zh-cn/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp?viewvs-2019原文链接https://www.cnblogs.com/hez2010/p/11810683.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com