zoukankan      html  css  js  c++  java
  • .netcore跨平台 之 windows上编译,ubuntu上运行

    1 下载并安装netcore sdk
        下载地址 https://github.com/dotnet/cli  


                           

          选取合适的版本下载安装即可

         打开 CMD ,输入dotnet,出现以下信息说明已安装好

    C:Users71700>dotnet
    Usage: dotnet [--help | app.dll]

     2 新建一个项目 

    新建项目在cmd 里输入dotnet new 即可

    C:Users71700>mkdir demo
    
    C:Users71700>cd demo
    
    C:Users71700demo>dotnet new
    Created new C# project in C:Users71700demo.
    
    C:Users71700demo>dir
     驱动器 C 中的卷没有标签。
     卷的序列号是 3A94-0B71
    
     C:Users71700demo 的目录
    
    2016-04-25  14:58    <DIR>          .
    2016-04-25  14:58    <DIR>          ..
    2016-04-25  14:58               214 Program.cs
    2016-04-25  14:58               308 project.json
                   2 个文件            522 字节
                   2 个目录 87,409,934,336 可用字节

    可以看到共生成了两个文件  program.cs和project.json 以下是内容
     Program.cs

    using System;
    
    namespace ConsoleApplication
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                Console.WriteLine("Hello World!");
            }
        }
    }

    project.json

    {
      "version": "1.0.0-*",
      "compilationOptions": {
        "emitEntryPoint": true
      },
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0-rc2-3002485"
        }
      },
      "frameworks": {
        "netcoreapp1.0": {
          "imports": "dnxcore50"
        }
      }
    }

    很简单的两个文件 ,就是要输出hello world

    3 修改project.json 来支持交叉编译

    {
      "version": "1.0.0-*",
      "compilationOptions": {
        "emitEntryPoint": true
      },
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",     //此处去掉,加上的话发布的时候不会netcore的运行环境和基础类库一块发布,需要在目标平台上安装netcore ,去掉的话就不用在目标平台上安装netcore了      
        "version": "1.0.0-rc2-3002485" } }, "frameworks": { "netcoreapp1.0": { "imports": "dnxcore50" } },
      "runtimes":{"ubuntu.15.04-x64":{}} //加入runtimes
    }

    4保存文件,还原引用包 运行dotnet restore

    C:Users71700demo>dotnet restore
    log  : Restoring packages for C:Users71700demoproject.json...
    info :   GET https://api.nuget.org/v3-flatcontainer/microsoft.netcore.dotnethostresolver/index.json
    info :   CACHE https://dotnetmyget.blob.core.windows.net/artifacts/dotnet-core/nuget/v3/flatcontainer/microsoft.netcore.dotnethostresolver/index.json
    info :   NotFound https://api.nuget.org/v3-flatcontainer/microsoft.netcore.dotnethostresolver/index.json 1208ms
    info :   CACHE https://dotnetmyget.blob.core.windows.net/artifacts/dotnet-core/nuget/v3/flatcontainer/microsoft.netcore.dotnethost/index.json
    info :   GET https://api.nuget.org/v3-flatcontainer/microsoft.netcore.dotnethost/index.json
    info :   NotFound https://api.nuget.org/v3-flatcontainer/microsoft.netcore.dotnethost/index.json 1935ms
    info : Committing restore...
    log  : Writing lock file to disk. Path: C:Users71700demoproject.lock.json
    log  : C:Users71700demoproject.json
    log  : Restore completed in 7649ms.
    
    NuGet Config files used:
        C:Users71700NuGet.Config
        C:Users71700AppDataRoamingNuGetNuGet.Config
    
    Feeds used:
        https://www.myget.org/F/dotnet-core/api/v3/index.json
        https://api.nuget.org/v3/index.json

    5 编译代码 dotnet build -r ubuntu.15.04-x64

    C:Users71700demo>dotnet build -r ubuntu.15.04-x64
    Compiling demo for .NETCoreApp,Version=v1.0

    Compilation succeeded.
    0 Warning(s)
    0 Error(s)

    Time elapsed 00:00:01.4677989

    6发布程序 dotnet publish -r ubuntu.15.04-x64

    C:Users71700demo>dotnet publish -r ubuntu.15.04-x64
    Publishing demo for .NETCoreApp,Version=v1.0/ubuntu.15.04-x64
    Project demo (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.
    publish: Published to C:Users71700demoinDebug
    etcoreapp1.0ubuntu.15.04-x64publish
    Published 1/1 projects successfully

    查看下publish文件夹

    文件很多,其中demo是ubuntu上的可执行文件

    7把publish文件加拷贝的共享文件夹里面 并挂载到ubuntu上 运行demo
     先ls查看下文件里面的内容

    root@lius-Virtual-Machine:/mnt/share/publish# ls
    demo                                     System.Net.Http.dll
    demo.deps.json                           System.Net.Http.Native.so
    demo.dll                                 System.Net.NameResolution.dll
    demo.pdb                                 System.Net.Primitives.dll
    demo.runtimeconfig.json                  System.Net.Requests.dll
    libcoreclr.so                            System.Net.Security.dll
    libcoreclrtraceptprovider.so             System.Net.Security.Native.so
    libdbgshim.so                            System.Net.Sockets.dll
    libhostfxr.so                            System.Net.WebHeaderCollection.dll
    libhostpolicy.so                         System.Numerics.Vectors.dll
    libmscordaccore.so                       System.ObjectModel.dll
    libmscordbi.so                           System.Private.Uri.dll
    libsosplugin.so                          System.Reflection.DispatchProxy.dll
    libsos.so                                System.Reflection.dll
    Microsoft.CodeAnalysis.CSharp.dll        System.Reflection.Emit.dll
    Microsoft.CodeAnalysis.dll               System.Reflection.Emit.ILGeneration.dll
    Microsoft.CodeAnalysis.VisualBasic.dll   System.Reflection.Emit.Lightweight.dll
    Microsoft.CSharp.dll                     System.Reflection.Extensions.dll
    Microsoft.VisualBasic.dll                System.Reflection.Metadata.dll
    Microsoft.Win32.Primitives.dll           System.Reflection.Primitives.dll
    Microsoft.Win32.Registry.dll             System.Reflection.TypeExtensions.dll
    mscorlib.dll                             System.Resources.Reader.dll
    mscorlib.ni.dll                          System.Resources.ResourceManager.dll
    sosdocsunix.txt                          System.Runtime.dll
    System.AppContext.dll                    System.Runtime.Extensions.dll
    System.Buffers.dll                       System.Runtime.Handles.dll
    System.Collections.Concurrent.dll        System.Runtime.InteropServices.dll
    System.Collections.dll                   System.Runtime.InteropServices.PInvoke.dll
    System.Collections.Immutable.dll         System.Runtime.InteropServices.RuntimeInformation.dll
    System.Collections.NonGeneric.dll        System.Runtime.Loader.dll
    System.Collections.Specialized.dll       System.Runtime.Numerics.dll
    System.ComponentModel.Annotations.dll    System.Security.Claims.dll
    System.ComponentModel.dll                System.Security.Cryptography.Algorithms.dll
    System.Console.dll                       System.Security.Cryptography.Cng.dll
    System.Diagnostics.Debug.dll             System.Security.Cryptography.Csp.dll
    System.Diagnostics.DiagnosticSource.dll  System.Security.Cryptography.Encoding.dll
    System.Diagnostics.FileVersionInfo.dll   System.Security.Cryptography.Native.so
    System.Diagnostics.Process.dll           System.Security.Cryptography.OpenSsl.dll
    System.Diagnostics.StackTrace.dll        System.Security.Cryptography.Primitives.dll
    System.Diagnostics.Tools.dll             System.Security.Cryptography.X509Certificates.dll
    System.Diagnostics.Tracing.dll           System.Security.Principal.dll
    System.Dynamic.Runtime.dll               System.Security.Principal.Windows.dll
    System.Globalization.Calendars.dll       System.Text.Encoding.CodePages.dll
    System.Globalization.dll                 System.Text.Encoding.dll
    System.Globalization.Extensions.dll      System.Text.Encoding.Extensions.dll
    System.Globalization.Native.so           System.Text.RegularExpressions.dll
    System.IO.Compression.dll                System.Threading.dll
    System.IO.Compression.Native.so          System.Threading.Overlapped.dll
    System.IO.Compression.ZipFile.dll        System.Threading.Tasks.Dataflow.dll
    System.IO.dll                            System.Threading.Tasks.dll
    System.IO.FileSystem.dll                 System.Threading.Tasks.Extensions.dll
    System.IO.FileSystem.Primitives.dll      System.Threading.Tasks.Parallel.dll
    System.IO.FileSystem.Watcher.dll         System.Threading.Thread.dll
    System.IO.MemoryMappedFiles.dll          System.Threading.ThreadPool.dll
    System.IO.UnmanagedMemoryStream.dll      System.Threading.Timer.dll
    System.Linq.dll                          System.Xml.ReaderWriter.dll
    System.Linq.Expressions.dll              System.Xml.XDocument.dll
    System.Linq.Parallel.dll                 System.Xml.XmlDocument.dll
    System.Linq.Queryable.dll                System.Xml.XPath.dll
    System.Native.a                          System.Xml.XPath.XDocument.dll
    System.Native.so

    执行dome

    root@lius-Virtual-Machine:/mnt/share/publish# ./demo
    Hello World!

    成功输出 helloworld

  • 相关阅读:
    memcache和memcached区别
    C++成员函数指针错误用法警示(成员函数指针与高性能的C++委托,三篇),附好多评论
    高手问答精选:Go 语言 —— 云计算时代的 C 语言(类似于一个FAQ)
    Delphi XE5 Android 调用手机震动(通过JObject测试是否支持震动)
    Delphi Android 将Google ZXing 整合(调用Jar文件)
    Delphi Android ActivityManager(提供了接口, 利用它可以方便的对Memory, Processes, Task, Service 等进行管)
    Azure 云 Web 应用程序
    C#由变量捕获引起对闭包
    React.js学习
    Web API
  • 原文地址:https://www.cnblogs.com/kubishishu/p/5430955.html
Copyright © 2011-2022 走看看