| 
  
   Size: 9339 
  
  Comment:  
 | 
  
   Size: 9807 
  
  Comment:  
 | 
| Deletions are marked like this. | Additions are marked like this. | 
| Line 235: | Line 235: | 
| // buiild and run with mono // mcs testTask.cs // mono testTask.exe  | 
|
| Line 238: | Line 242: | 
| // string interpolation with $ might not be supported in mono | |
| Line 247: | Line 252: | 
| Console.WriteLine($"ThreadId {Thread.CurrentThread.ManagedThreadId}"); |             //Console.WriteLine($"ThreadId {Thread.CurrentThread.ManagedThreadId}"); Console.WriteLine("ThreadId {0}",Thread.CurrentThread.ManagedThreadId);  | 
| Line 251: | Line 257: | 
| Console.WriteLine($"ThreadId {Thread.CurrentThread.ManagedThreadId}"); |                 //Console.WriteLine($"ThreadId {Thread.CurrentThread.ManagedThreadId}"); Console.WriteLine("ThreadId {0}",Thread.CurrentThread.ManagedThreadId);  | 
| Line 256: | Line 263: | 
| Console.WriteLine($"ThreadId {Thread.CurrentThread.ManagedThreadId}"); |                 //Console.WriteLine($"ThreadId {Thread.CurrentThread.ManagedThreadId}"); Console.WriteLine("ThreadId {0}",Thread.CurrentThread.ManagedThreadId);  | 
| Line 267: | Line 275: | 
| Console.WriteLine($"Res: {txy.Result}"); |                 //Console.WriteLine($"Res: {txy.Result}"); Console.WriteLine("Res: {0}",txy.Result);  | 
.Net core
.NET Core to develop console or Web applications. .NET Core is a set of runtime, library and compiler components that allow you to create apps that run on Windows, macOS and Linux.
https://docs.microsoft.com/pt-pt/dotnet/core/docker/building-net-docker-images
https://msdn.microsoft.com/en-us/library/ff361664(v=vs.110).aspx
In browser tutorial
Sample hello world
. ├── appSolution.sln ├── Dockerfile ├── myApp │ ├── myApp.csproj │ └── Program.cs ├── myLib │ ├── Class1.cs │ └── myLib.csproj ├── myLibTests │ ├── myLibTests.csproj │ └── UniTest1.cs
Dockerfile
FROM microsoft/dotnet:2.0-sdk WORKDIR /app RUN apt-get update RUN apt-get install net-tools procps vim nano -y RUN mkdir -p /app/myApp RUN mkdir -p /app/myLib RUN mkdir -p /app/myLibTests ADD myApp/* /app/myApp/ ADD myLib/* /app/myLib/ ADD myLibTests/* /app/myLibTests/ ADD appSolution.sln /app/ RUN cd /app && dotnet clean && dotnet build RUN cd /app/myLibTests && dotnet clean && dotnet test CMD cd /app/myApp/ && dotnet bin/Debug/netcoreapp2.0/myApp.dll && tail -f /var/log/lastlog #CMD tail -f /var/log/lastlog
appSolution.sln
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26124.0
MinimumVisualStudioVersion = 15.0.26124.0
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "myApp", "myApp\myApp.csproj", "{5E009AC4-9BF5-4E1B-9C22-377AC9ECC4EB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "myLib", "myLib\myLib.csproj", "{00D6703F-2D64-4D9A-95AA-430DC38E4EC3}"
EndProject
Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
                Debug|Any CPU = Debug|Any CPU
                Debug|x64 = Debug|x64
                Debug|x86 = Debug|x86
                Release|Any CPU = Release|Any CPU
                Release|x64 = Release|x64
                Release|x86 = Release|x86
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
                {5E009AC4-9BF5-4E1B-9C22-377AC9ECC4EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {5E009AC4-9BF5-4E1B-9C22-377AC9ECC4EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
                {5E009AC4-9BF5-4E1B-9C22-377AC9ECC4EB}.Debug|x64.ActiveCfg = Debug|x64
                {5E009AC4-9BF5-4E1B-9C22-377AC9ECC4EB}.Debug|x64.Build.0 = Debug|x64
                {5E009AC4-9BF5-4E1B-9C22-377AC9ECC4EB}.Debug|x86.ActiveCfg = Debug|x86
                {5E009AC4-9BF5-4E1B-9C22-377AC9ECC4EB}.Debug|x86.Build.0 = Debug|x86
                {5E009AC4-9BF5-4E1B-9C22-377AC9ECC4EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
                {5E009AC4-9BF5-4E1B-9C22-377AC9ECC4EB}.Release|Any CPU.Build.0 = Release|Any CPU
                {5E009AC4-9BF5-4E1B-9C22-377AC9ECC4EB}.Release|x64.ActiveCfg = Release|x64
                {5E009AC4-9BF5-4E1B-9C22-377AC9ECC4EB}.Release|x64.Build.0 = Release|x64
                {5E009AC4-9BF5-4E1B-9C22-377AC9ECC4EB}.Release|x86.ActiveCfg = Release|x86
                {5E009AC4-9BF5-4E1B-9C22-377AC9ECC4EB}.Release|x86.Build.0 = Release|x86
                {00D6703F-2D64-4D9A-95AA-430DC38E4EC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {00D6703F-2D64-4D9A-95AA-430DC38E4EC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
                {00D6703F-2D64-4D9A-95AA-430DC38E4EC3}.Debug|x64.ActiveCfg = Debug|x64
                {00D6703F-2D64-4D9A-95AA-430DC38E4EC3}.Debug|x64.Build.0 = Debug|x64
                {00D6703F-2D64-4D9A-95AA-430DC38E4EC3}.Debug|x86.ActiveCfg = Debug|x86
                {00D6703F-2D64-4D9A-95AA-430DC38E4EC3}.Debug|x86.Build.0 = Debug|x86
                {00D6703F-2D64-4D9A-95AA-430DC38E4EC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
                {00D6703F-2D64-4D9A-95AA-430DC38E4EC3}.Release|Any CPU.Build.0 = Release|Any CPU
                {00D6703F-2D64-4D9A-95AA-430DC38E4EC3}.Release|x64.ActiveCfg = Release|x64
                {00D6703F-2D64-4D9A-95AA-430DC38E4EC3}.Release|x64.Build.0 = Release|x64
                {00D6703F-2D64-4D9A-95AA-430DC38E4EC3}.Release|x86.ActiveCfg = Release|x86
                {00D6703F-2D64-4D9A-95AA-430DC38E4EC3}.Release|x86.Build.0 = Release|x86
        EndGlobalSection
EndGlobal
myApp/Program.cs
myApp/myApp.csproj
myLib/Class1.cs
myLib/myLib.csproj
myLibTests/UniTest1.cs
myLibTests/myLibTests.csproj
   1 <Project Sdk="Microsoft.NET.Sdk">
   2 
   3   <PropertyGroup>
   4     <TargetFramework>netcoreapp2.0</TargetFramework>
   5 
   6     <IsPackable>false</IsPackable>
   7   </PropertyGroup>
   8 
   9   <ItemGroup>
  10     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.6.0" />
  11     <PackageReference Include="xunit" Version="2.3.1" />
  12     <PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
  13     <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
  14   </ItemGroup>
  15 
  16   <ItemGroup>
  17     <ProjectReference Include="..\myLib\myLib.csproj" />
  18   </ItemGroup>
  19 
  20 </Project>
Docker commands
   1 #build image
   2 docker build -t dotnetcorehello .
   3 # execute bash in running container
   4 docker exec -it $1 bash
   5 # delete all containers
   6 docker ps -a | awk '//{print $1}' | grep  -v "CONTAINER" | xargs -i sh -c 'docker stop {};docker rm {}'
   7 # execute container using inage dotnetcorehello
   8 docker run -d  dotnetcorehello
   9 # list all containers
  10 docker ps -a
dotnet core commands
test Task
   1 // buiild and run with mono
   2 // mcs testTask.cs 
   3 // mono testTask.exe 
   4 
   5 using System;
   6 using System.Threading.Tasks;
   7 using System.Threading;
   8 // string interpolation with $ might not be supported in mono
   9 
  10 namespace testTask
  11 {
  12     class Program
  13     {
  14         static void Main()
  15         {
  16             var x=1;
  17             // String interpolation $"{varxyz}"
  18             //Console.WriteLine($"ThreadId {Thread.CurrentThread.ManagedThreadId}");
  19             Console.WriteLine("ThreadId {0}",Thread.CurrentThread.ManagedThreadId);
  20             Task t = Task.Run( () => {
  21                 x++;
  22                 Console.WriteLine("Stuff");
  23                 //Console.WriteLine($"ThreadId {Thread.CurrentThread.ManagedThreadId}");
  24                 Console.WriteLine("ThreadId {0}",Thread.CurrentThread.ManagedThreadId);
  25             } );
  26             t.ContinueWith((Task task)=>{
  27                 x++;
  28                 Console.WriteLine("This the end !");
  29                 //Console.WriteLine($"ThreadId {Thread.CurrentThread.ManagedThreadId}");
  30                 Console.WriteLine("ThreadId {0}",Thread.CurrentThread.ManagedThreadId);
  31                 task.ContinueWith((Task t2)=>{
  32                     x++;
  33                     Console.WriteLine("t2 {0}",x);
  34                     Console.WriteLine("ThreadId {0}",Thread.CurrentThread.ManagedThreadId);
  35                 });
  36             });
  37             //t.Wait();  
  38             var tx = Task<long>.Run( ()=>{ return 11L; } );
  39 
  40             tx.ContinueWith((Task<long> txy)=>{
  41                 //Console.WriteLine($"Res: {txy.Result}");
  42                 Console.WriteLine("Res: {0}",txy.Result);
  43             });         
  44         }
  45     }
  46 }
test foreach
   1 //build and run using mono
   2 //mcs testForeach.cs 
   3 //mono testForeach.exe
   4 using System;
   5 using System.Collections.Generic;
   6 
   7 namespace loopNrs
   8 {
   9     class Program
  10     {
  11         static void Main()
  12         {
  13             var numbers = new List<long> { 1,2,3,4 };
  14             foreach (var nr in numbers)
  15             {
  16                 //string interpolation is not supported in mono !?
  17                 // Console.WriteLine($"Hello {nr}!");
  18                 Console.WriteLine("Hello {0}!",nr);
  19             }
  20         }
  21     }
  22 }
