关于.net 和.net core我做过最傻的事

一. 问题起源

需求:项目存储部分业务时间存储的格式为“当前时间 - 2018年”的时间间隔天数,导致我看到 int 型日期时,无法直观感受到是哪一天,由此产生以下代码

目标:写一个自动转换日期与时间间隔天数的应用程序

过程:使用vs2017新建了一个目标框架为 ".net core 2.2“ 的控制台应用程序”,书写了如下代码:

using System;

namespace DateTimekey
{
    class Program
    {
        private const int _firstYear = 2018;
        private static readonly DateTime _firstDateTime = new DateTime(_firstYear, 1, 1);
        static void Main(string[] args)
        {
            Console.WriteLine("输入:");
            string datetimekey = Console.ReadLine();int temp = Convert.ToInt32(datetimekey);
            GetDateTime(temp);
            Console.ReadLine();
        }public static void GetDateTime(int key)
        {
            DateTime now = _firstDateTime.AddDays(key);
            Console.WriteLine("日期:"+now);
        }
    }
}

未知问题:我在生成打包后,没有寻找到.exe文件

百度了下,众说纷纭

常见错误操作:可能因为你输出的是DLL类型,右键程序集-属性-输出类型选windows应用程序试试

正解:.net core是跨平台框架,编译成exe了如何在linux/MacOS下运行?如果要编译成exe,请选择.net framework

附:core的运行方式是在对应dll目录下打开windows窗口,然后用dotnet xxx.dll来运行

随后,新建了.net framework类型的控制台项目(没有打包选项了),生成之后的文件如下

 深感不了解框架体系和运行机制带来的危害,于是有了这篇博文

二. dll文件

定义:

(1)DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。

(2)是一种不可执行的二进制程序文件

(3)DLL文件和EXE文件同样可以由编译语言生成,但是DLL没有程序启动入口,所以DLL文件不可执行

(4)DLL是和语言无关的,因此能创建一个DLL,被C++、VB或所有支持动态链接库的语言调用。这样如果一种语言存在不足,就能通过访问另一种语言创建的DLL来弥补。

三.在linux系统上运行.net core项目

猜你喜欢

转载自www.cnblogs.com/yxcn/p/10913416.html