zoukankan      html  css  js  c++  java
  • 关于.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项目

  • 相关阅读:
    HTML5学习
    Python随手记
    Python学习之warn()函数
    Redis学习
    多线程--wait()和notify(),Thread中的等待和唤醒方法
    Interrupt中断线程注意点
    Thread中yield方法
    mysql创建唯一索引,避免数据重复插入
    Jquery自动补全插件的使用
    linux ssh免密登陆远程服务器
  • 原文地址:https://www.cnblogs.com/yxcn/p/10913416.html
Copyright © 2011-2022 走看看