.netcore跨平台 之 windows上编译,ubuntu上运…

2018-06-23 23:08:34来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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


                       

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

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

C:\Users\71700>dotnet
Usage: dotnet [--help | app.dll]

 2 新建一个项目 

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

 

C:\Users\71700>mkdir demo

C:\Users\71700>cd demo

C:\Users\71700\demo>dotnet new
Created new C# project in C:\Users\71700\demo.

C:\Users\71700\demo>dir
 驱动器 C 中的卷没有标签。
 卷的序列号是 3A94-0B71

 C:\Users\71700\demo 的目录

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:\Users\71700\demo>dotnet restore
log  : Restoring packages for C:\Users\71700\demo\project.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:\Users\71700\demo\project.lock.json
log  : C:\Users\71700\demo\project.json
log  : Restore completed in 7649ms.

NuGet Config files used:
    C:\Users\71700\NuGet.Config
    C:\Users\71700\AppData\Roaming\NuGet\NuGet.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:\Users\71700\demo>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:\Users\71700\demo>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:\Users\71700\demo\bin\Debug\netcoreapp1.0\ubuntu.15.04-x64\publish
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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:C# 配置文件 AppSettings和ConnectionStrings的区别

下一篇:Android之Android studio安装