SlideShare a Scribd company logo
1 of 39
Download to read offline
.NET Core + ASP.NET Core Training Course
Session 2
.NET Core
What we learned?
Session 1 Overview
• The history of .NET Framework
• .NET Framework position among it’s competitors
• Why .NET Core?
• .NET Core Components (CoreFX, CLR)
• .NET CLI
• .NET Core Deployment Models (Portable Apps, Self-contained Apps)
• .NET Core project structure
• .NET Core Comparison with .NET Framework
.NET Core
What we’ll learn today?
Session 2 Agenda
• Introducing .NET Standard
• Managing Package Dependency Versions
• .NET Portability Analyzer
• .NET Core Tools
• Telemetry
• Overview on Extensibility Model
• Dotnet-new
• Dotnet-restore
• Dotnet-run
• Dotnet-build
• Dotnet-test
• Dotnet-pack
• dotnet-publish
• dotnet-install-script
• project.json
• global.json
.NET Core
Introducing .NET Standard
Introducing .NET Standard
The .NET Standard Library is a formal
specification of .NET APIs that are intended to
be available on all .NET runtimes. The
motivation behind the Standard Library is
establishing greater uniformity in the .NET
ecosystem.
The .NET Standard Library enables the following key scenarios:
• Defines uniform set of BCL APIs for all .NET platforms to
implement, independent of workload.
• Enables developers to produce portable libraries that are
usable across .NET runtimes, using this same set of APIs.
• Reduces and hopefully eliminates conditional
compilation of shared source due to .NET APIs, only for
OS APIs.
.NET Core
Managing Package Dependency Versions
Managing Package Dependency Versions
Glossary
Fix - Fixing dependencies means you are using the same "family" of packages released on NuGet for .NET Core 1.0.
Metapackage - A NuGet package that represents a set of NuGet packages.
Trimming - The act of removing the packages you do not depend on from a metapackage. This is something
relevant for NuGet package authors.
.NET Core
Managing Package Dependency Versions
Managing Package Dependency Versions
Fix your dependencies to .NET Core 1.0
To reliably restore packages and write reliable code, it's important that you fix your dependencies to the versions of
packages shipping alongside .NET Core 1.0. This means every package should have a single version with no additional
qualifiers.
Examples of packages fixed to 1.0
• "System.Collections":"4.0.11"
• "NETStandard.Library":"1.6.0"
• "Microsoft.NETCore.App":"1.0.0"
Examples of packages that are NOT fixed to 1.0
• "Microsoft.NETCore.App":"1.0.0-rc4-00454-00"
• "System.Net.Http":"4.1.0-*"
• "System.Text.RegularExpressions":"4.0.10-rc3-24021-00"
Packages and Version Numbers organized by Metapackage
List of all .NET Standard library packages and their versions for 1.0.
List of all runtime packages and their versions for 1.0.
List of all .NET Core application packages and their versions for 1.0.
.NET Core
.NET Portability Analyzer
.NET Portability Analyzer
The goal of these tools is to help identify possible problem areas in an assembly and help direct
targeted testing, by identifying APIs that:
• Are not portable to specific platforms
• Have breaking changes between 4.x versions
Usage:
ApiPort.exe analyze <options>
-f, --file=VALUE [Required] Path to assembly file or directory of assemblies.
-o, --out=VALUE Output file name
-d, --description=VALUE Description of the submission
-t, --target=VALUE The target you want to check against.
-r, --resultFormat=VALUE The report output format
-p, --showNonPortableApis Calculate non-portable APIs
-b, --showBreakingChanges Calculate breaking changes on full .NET Framework
-u, --showRetargettingIssues Include the retargetting issues in the reports
--noDefaultIgnoreFile Do not use the standard assembly ignore list when analyzing breaking changes. The default ignore list can be found at KnownSafeBreaks.json
.NET Core
.NET Portability Analyzer
.NET Portability Analyzer
Portability Service
APIPort VS Extenstion
ApiPort.exe analyze -f foo.dll -t ".NET CORE, Version=5.0" -t ".NET Framework" -r HTML
ApiPort.exe listTargets
ApiPort.exe listOutputFormats
See the data being transmitted
Run the tool in an offline mode
using System;
using System.Runtime.Serialization;
namespace Application
{
#if DESKTOP
[Serializable]
#endif
public class SomeCustomException : Exception
{
public SomeCustomException() { }
#if DESKTOP
protected SomeCustomException(SerializationInfo info, StreamingContext context)
: base(info, context)
{ }
#endif
}
}
.NET Core
Telemetry
.NET Core Tools Telemetry
The .NET Core tools include a telemetry feature so that the .NET Team can collect
usage information about the .NET Core Tools. Telemetry is only in the tools and
does not affect any app.
• The telemetry feature is on by default
• The data collected is anonymous in nature
• The data will be published in an aggregated form
• Microsoft and community engineers receive data under a Creative Commons license
• opt-out with environment variable: DOTNET_CLI_TELEMETRY_OPTOUT
.NET Core
Telemetry
.NET Core Tools Telemetry
The feature collects the following pieces of data:
• The command being used (for example, “build”, “restore”)
• Arguments passed to the command
• The ExitCode of the command
• For test projects, the test runner being used
• The timestamp of invocation
• The framework used
• Whether runtime IDs are present in the “runtimes” node
• The CLI version being used
The feature will not collect any personal data, such as usernames or emails
It’s based on End User License Agreement (EULA)
.NET Core
.NET Core CLI extensibility model
.NET Core CLI extensibility model
How to extend CLI tools?
The CLI tools can be extended in two main ways (one or both):
• Via NuGet packages on a per-project basis
• Via the system's PATH
Per-project tools are portable console applications that are distributed as NuGet packages. Tools are only
available in the context of the project that references them and for which they are restored; invocation
outside of the context of the project (for example, outside of the directory that contains the project) will fail
as the command will not be able to be found. EF, Web, etc.
Consuming these tools requires you to add a tools node to your project.json.
.NET Core
.NET Core CLI extensibility model
.NET Core CLI extensibility model
PATH-based extensibility
is usually used for development machines where you need a tool that
conceptually covers more than a single project.
dotnet driver can run any command that is named after the dotnet
<command> convention. The default resolution logic will first probe several
locations and will finally fall to the system PATH. If the requested command
exists in the system PATH and is a binary that can be invoked, dotnet driver
will invoke it.
dotnet-clean /usr/local/bin/
.NET Core
dotnet-new
.NET Core Tools dotnet-new
dotnet-new -- Creates a new .NET Core project
• SYNOPSIS: dotnet new [--type] [--lang]
• Invoked in the context of a directory
1. A Program.cs (or Program.fs) file that contains a sample "Hello World" program.
2. A valid project.json file.
• Options: -l, --lang [C#|F#] Defaults to C#. csharp (fsharp) or cs (fs) are also valid options.
• Options: -t, --type Valid values are console, web, lib and xunittest
dotnet new
dotnet new --lang f#
dotnet new --lang c#
dotnet new -t web
.NET Core
dotnet-restore
.NET Core Tools dotnet-restore
dotnet-restore - Restores the dependencies and tools of a project
• SYNOPSIS: dotnet restore [--source] [--packages] [--disable-parallel] [--fallbacksource] [--
configfile] [--verbosity] [<root>]
• Uses NuGet to restore dependencies as well as project-specific tools that are specified in the project.json
• By default, the restoration of dependencies and tools are done in parallel
• NuGet needs the feeds where the packages are located, location is in NuGet.config
• Uses specific NuGet.config file should be in the project directory
• For dependencies, use the --packages argument, if not specified, the default NuGet package cache is used.
It is found in the .nuget/packages directory in the user's home directory on all operating systems (for example, /home/user1 on
Linux or C:Usersuser1 on Windows)
.NET Core
dotnet-restore
.NET Core Tools dotnet-restore
OPTIONS:
• [root]
A list of projects or project folders to restore. The list can contain either a path to a project.json file, or a path to global.json file or folder.
The restore operation runs recursively for all subdirectories and restores for each given project.json file it finds.
• -s, --source [SOURCE]
Specifies a source to use during the restore operation. This overrides all of the sources specified in the NuGet.config file(s).
• --packages [DIR]
Specifies the directory to place the restored packages in.
• --disable-parallel
Disables restoring multiple projects in parallel.
• -f, --fallbacksource [FEED]
Specifies a fallback source that will be used in the restore operation if all other sources fail. All valid feed formats are allowed.
.NET Core
dotnet-restore
.NET Core Tools dotnet-restore
OPTIONS:
• --configfile [FILE]
Configuration file (NuGet.config) to use for the restore operation.
• --verbosity [LEVEL]
The verbosity of logging to use. Allowed values: Debug, Verbose, Information, Minimal, Warning, or Error.
dotnet restore
dotnet restore ~/projects/app1/project.json
dotnet restore --f c:packagesmypackages
dotnet restore --verbosity Error
.NET Core
dotnet-run
.NET Core Tools dotnet-run
dotnet-run -- Runs source code 'in-place' without any explicit compile or launch commands.
• SYNOPSIS: dotnet run [--framework] [--configuration] [--project] [--help] [--]
• This command is useful for fast iterative development (can also be used to run a source-distributed program (website))
• Relies on dotnet build to build source inputs to a .NET assembly
• Before launching the program calls dotnet build to build
• Output files are written to the child bin folder, which will be created if it doesn't exist
• Temporary files are written to the child obj folder
• In case of multiple specified frameworks, dotnet run will first select the .NET Core frameworks
• To specify other frameworks, use the --framework argument
• dotnet run command works with projects, not built assemblies
.NET Core
dotnet-run
.NET Core Tools dotnet-run
Options:
• -- Delimits arguments to dotnet run from arguments for the application being run. All arguments after this one will be passed to
the application being run
• -f, --framework [FID] Runs the application for a given framework identifier (FID)
• -c, --configuration [Debug|Release] Configuration to use when publishing. The default value is "Debug"
• -p, --project [PATH] Specifies which project to run. It can be a path to a project.json file or to a directory containing a
project.json file. It defaults to current directory if not specified
dotnet run
dotnet run --project /projects/proj1/project.json
dotnet run --configuration Release -- --help
.NET Core
dotnet-build
.NET Core Tools dotnet-build
dotnet-build -- Builds a project and all of its dependencies
• SYNOPSIS: dotnet build [--output] [--build-base-path] [--framework] [--configuration] [--runtime] [--
version-suffix] [--build-profile] [--no-incremental] [--no-dependencies] [<project>]
• The binary will be in Intermediate Language (IL) by default and will have a DLL extension
• dotnet build will also drop a *.deps file which outlines what the host needs to run the application
• Building requires the existence of a lock file, which means that you have to run dotnet restore prior to building your code
• Before any compilation begins, the build verb analyzes the project and its dependencies for
incremental safety checks
• If all checks pass, then build proceeds with incremental compilation of the project and its
dependencies; otherwise, it falls back to non-incremental compilation
.NET Core
dotnet-build
.NET Core Tools dotnet-build
All projects in the dependency graph that need compilation must pass the following safety checks in order for
the compilation process to be incremental:
• not use pre/post compile scripts
• not load compilation tools from PATH (for example, resgen, compilers)
• use only known compilers (csc, vbc, fsc)
In order to build an executable application, you need a special configuration section in your project.json file:
{
"compilerOptions": {
"emitEntryPoint": true
}
}
.NET Core
dotnet-build
.NET Core Tools dotnet-build
OPTIONS:
• -o, --output [DIR]: Directory in which to place the built binaries.
• -b, --build-base-path [DIR]: Directory in which to place temporary outputs.
• -f, --framework [FRAMEWORK]: Compiles for a specific framework. Needs to be defined in the project.json file.
• -c, --configuration [Debug|Release]: Defines a configuration under which to build. If omitted, it defaults to Debug.
• -r, --runtime [RUNTIME_IDENTIFIER]: Target runtime to build for.
• --version-suffix [VERSION_SUFFIX]: Defines what * should be replaced with in the version field in the project.json file.
• --build-profile: Prints out the incremental safety checks that users need to address in order for incremental compilation
• --no-incremental: Marks the build as unsafe for incremental build. forces a clean rebuild of the project dependency graph.
• --no-dependencies: Ignores project-to-project references and only builds the root project specified to build.
.NET Core
dotnet-test
.NET Core Tools dotnet-test
dotnet-test - Runs unit tests using the configured test runner
• SYNOPSIS: dotnet test [--configuration] [--output] [--build-base-path] [--framework] [--runtime] [--no-
build] [--parentProcessId] [--port] [<project>]
• Unit tests are class library projects that have dependencies on the unit test framework (NUnit or xUnit)
and the dotnet test runner for that unit testing framework, These are packaged as NuGet packages and are restored as
ordinary dependencies for the project
• Test projects need to specify a test runner property in project.json using the "testRunner" node. This value
should contain the name of the unit test framework.
.NET Core
dotnet-test
.NET Core Tools dotnet-test
{
"version": "1.0.0-*",
"buildOptions": { "debugType": "portable" },
"dependencies": {
"System.Runtime.Serialization.Primitives": "4.1.1",
"xunit": "2.1.0",
"dotnet-test-xunit": "1.0.0-rc2-192208-24" },
"testRunner": "xunit",
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": { "type": "platform", "version": "1.0.0“ } },
"imports": [
"dotnet5.4",
"portable-net451+win8"
] } } }
dotnet test supports two running modes:
1. Console: In console mode, dotnet test simply executes fully
any command gets passed to it and outputs the results.
Anytime you invoke dotnet test without passing --port, it runs
in console mode, which in turn will cause the runner to run in
console mode.
2. Design time: used in the context of other tools, such as
editors or Integrated Development Environments (IDEs).
dotnet test
dotnet test /projects/test1/project.json
.NET Core
dotnet-test
.NET Core Tools dotnet-test
OPTIONS
• [project]: Specifies a path to the test project. If omitted, it defaults to current directory.
• -c, --configuration [Debug|Release]: Configuration under which to build. The default value is Release.
• -o, --output [DIR]: Directory in which to find binaries to run.
• -b, --build-base-path [DIR]: Directory in which to place temporary outputs.
• -f, --framework [FRAMEWORK]: Looks for test binaries for a specific framework.
• -r, --runtime [RUNTIME_IDENTIFIER]: Look for test binaries for a for the specified runtime.
• --no-build: Does not build the test project prior to running it.
• --parentProcessId: Used by IDEs to specify their process ID. Test will exit if the parent process does.
• --port: Used by IDEs to specify a port number to listen for a connection.
.NET Core
dotnet-pack
.NET Core Tools dotnet-pack
dotnet-pack - Packs the code into a NuGet package
• SYNOPSIS: dotnet pack [--output] [--no-build] [--build-base-path] [--configuration] [--version-suffix]
[<project>]
• The dotnet pack command builds the project and creates NuGet packages
• The result is two packages with the nupkg extension. One contains the code and the other contains the debug symbols
• NuGet dependencies of the project being packed are added to the nuspec file
• Project-to-project references are not packaged inside the project by default, for doing this, reference the
required project in dependencies node with a type set to "build"
.NET Core
dotnet-pack
.NET Core Tools dotnet-pack
OPTIONS
• [project]: The project to pack. It can be either a path to a project.json file or to a directory. If omitted, the current directory.
• -o, --output [DIR]: Places the built packages in the directory specified.
• --no-build: Skips the building phase of the packing process. useful in Continuous Integration (CI) build scenarios in which you
know the code was just previously built.
• --build-base-path: Places the temporary build artifacts in the specified directory. Default: obj directory in the current directory.
• -c, --configuration [Debug|Release]: Configuration to use when building the project. If not specified, "Debug".
dotnet pack
dotnet pack ~/projects/app1/project.json
dotnet pack --output nupkgs
dotnet pack --no-build --output nupkgs
.NET Core
dotnet-publish
.NET Core Tools dotnet-publish
dotnet-publish - Packs the application and all of its dependencies into a folder getting it ready for publishing
• SYNOPSIS: dotnet publish [--framework] [--runtime] [--build-base-path] [--output] [--version-suffix] [--
configuration] [<project>]
• compiles the application, reads through its dependencies specified in the project.json file and publishes
the resulting set of files to a directory
• Depending on the type of portable app, the resulting directory will contain the following:
1. Portable application - application's intermediate language (IL) code and all of application's managed dependencies.
• Portable application with native dependencies - same as above with a sub-directory for the supported platform of each
native dependency.
2. Self-contained application - same as above plus the entire runtime for the targeted platform.
.NET Core
dotnet-publish
.NET Core Tools dotnet-publish
OPTIONS
• [project]: needs access to the project.json file to work. If it is not specified, default is current directory.
• -f, --framework [FID]: Publishes the application for a given framework identifier (FID). If not specified, reads from project.json
• -r, --runtime [RID]: Publishes the application for a given runtime
• -b, --build-base-path [DIR]: Directory in which to place temporary outputs.
• -o, --output: Specify the path where to place the directory. If not specified, it will default to
./bin/[configuration]/[framework]/ for portable applications
./bin/[configuration]/[framework]/[runtime] for self-contained applications.
• --version-suffix [VERSION_SUFFIX]: Defines what * should be replaced with in the version field in the project.json file.
• -c, --configuration [Debug|Release]: Configuration to use when publishing. The default value is Debug.
.NET Core
dotnet-publish
.NET Core Tools dotnet-publish
dotnet publish
Publishes an application using the framework found in project.json. If project.json contains runtimes node, publish for the RID of the current platform.
dotnet publish ~/projects/app1/project.json
Publishes the application using the specified project.json.
dotnet publish --framework netcoreapp1.0
Publishes the current application using the netcoreapp1.0 framework.
dotnet publish --framework netcoreapp1.0 --runtime osx.10.11-x64
Publishes the current application using the netcoreapp1.0 framework and runtime for OS X 10.10. This RID has to exist in the project.json runtimes node.
.NET Core
dotnet-install scripts reference
.NET Core Tools dotnet-install scripts reference
dotnet-install.ps1 | dotnet-install.sh - script used to install the Command Line Interface (CLI) tools and shared runtime
SYNOPSIS:
• Windows: dotnet-install.ps1 [-Channel] [-Version] [-InstallDir] [-Debug] [-NoPath] [-SharedRuntime]
• OS X/Linux: dotnet-install.sh [--channel] [--version] [--install-dir] [--debug] [--no-path] [--shared-runtime]
The dotnet-install scripts are used to perform a non-admin install of the CLI toolchain and the shared runtime. You can
download the scripts from our CLI GitHub repo. (ZIP/tarball). By default, SDK will downloaded.
Bash script also "understands" PowerShell switches.
.NET Core
dotnet-install scripts reference
.NET Core Tools dotnet-install scripts reference
Options PowerShell (Windows)
-Channel [CHANNEL]: Which channel (for example, "future", "preview", "production") to install from. default: "Production".
-Version [VERSION]: Version of CLI to install; 3-part version (i.e. 1.0.0-13232). If omitted, default: first global.json that contains the
sdkVersion property; if not presents, it will use Latest.
-InstallDir [DIR]: Path to install to. The directory is created if it doesn't exist. The default value is %LocalAppData%.dotnet.
-Debug: true to indicate that larger packages containing debugging symbols should be used; otherwise, false. The default value is false.
-NoPath: true to indicate that the prefix/installdir are not exported to the path for the current session; otherwise, false. The default value
is false, that is, the PATH is modified. This makes the CLI tools available immediately after install.
-SharedRuntime: true to install just the shared runtime bits; false to install the entire SDK. The default value is false.
.NET Core
dotnet-install scripts reference
.NET Core Tools dotnet-install scripts reference
Options Bash (OS X/Linux)
--channel [CHANNEL]: Which channel (for example "future", "preview", "production") to install from. The default value is "Production".
--version [VERSION]: Which version of CLI to install; version as 3-part version (i.e. 1.0.0-13232). If omitted default is the first global.json
that contains the sdkVersion property; if that is not present, it will use Latest.
--install-dir [DIR]: Path to where to install. The directory is created if it doesn't exist. The default value is $HOME/.dotnet.
--debug: true to indicate that larger packages containing debugging symbols should be used; otherwise, false. The default value is false.
--no-path: true to indicate that the prefix/installdir are not exported to the path for the current session; otherwise, false. The default value is false, that is,
the PATH is modified. This makes the CLI tools available immediately after install.
--shared-runtime: true to install just the shared runtime bits; false to install the entire SDK. The default value is false.
.NET Core
dotnet-install scripts reference
.NET Core Tools dotnet-install scripts reference
EXAMPLES
Windows: ./dotnet-install.ps1 -Channel Future
OS X/Linux: ./dotnet-install.sh --channel Future Installs the dev latest version to the default location.
Windows: ./dotnet-install.ps1 -Channel preview -InstallDir C:cli
OS X/Linux: ./dotnet-install.sh --channel preview --install-dir ~/cli
.NET Core
project.json reference
.NET Core Tools project.json reference
name
version
summary
description
copyright
title
entryPoint
projectUrl
licenseUrl
iconUrl
compilerName
testRunner
authors
owners
tags
language
releaseNotes
requireLicenseAcceptance
embedInteropTypes
compile
content
Resource
preprocess
publishExclude
shared
namedResource
packInclude
exclude
contentBuiltIn
compileBuiltIn
resourceBuiltIn
excludeBuiltIn
dependencies
tools
commands
scripts
compilationOptions
analyzerOptions
configurations
frameworks
.NET Core
project.json Example:
.NET Core Tools project.json
.NET Core
project.json Example:
.NET Core Tools project.json
.NET Core
project.json Example:
.NET Core Tools project.json
.NET Core
global.json reference
.NET Core Tools global.json reference
projects
Type: String[]
Specifies what folders the build system should search for projects when resolving dependencies. The build system will only
search top level child folders.
packages
Type: String[]
The folder to store packages.
.NET Core
Demo
Demo

More Related Content

What's hot

.NET Core, ASP.NET Core Course, Session 16
.NET Core, ASP.NET Core Course, Session 16.NET Core, ASP.NET Core Course, Session 16
.NET Core, ASP.NET Core Course, Session 16aminmesbahi
 
.NET Core, ASP.NET Core Course, Session 7
.NET Core, ASP.NET Core Course, Session 7.NET Core, ASP.NET Core Course, Session 7
.NET Core, ASP.NET Core Course, Session 7aminmesbahi
 
.NET Core, ASP.NET Core Course, Session 10
.NET Core, ASP.NET Core Course, Session 10.NET Core, ASP.NET Core Course, Session 10
.NET Core, ASP.NET Core Course, Session 10aminmesbahi
 
.NET Core, ASP.NET Core Course, Session 18
 .NET Core, ASP.NET Core Course, Session 18 .NET Core, ASP.NET Core Course, Session 18
.NET Core, ASP.NET Core Course, Session 18aminmesbahi
 
.NET Core, ASP.NET Core Course, Session 19
 .NET Core, ASP.NET Core Course, Session 19 .NET Core, ASP.NET Core Course, Session 19
.NET Core, ASP.NET Core Course, Session 19aminmesbahi
 
Spring hibernate tutorial
Spring hibernate tutorialSpring hibernate tutorial
Spring hibernate tutorialRohit Jagtap
 
24 collections framework interview questions
24 collections framework interview questions24 collections framework interview questions
24 collections framework interview questionsArun Vasanth
 
Hibernate Developer Reference
Hibernate Developer ReferenceHibernate Developer Reference
Hibernate Developer ReferenceMuthuselvam RS
 
Tech_Implementation of Complex ITIM Workflows
Tech_Implementation of Complex ITIM WorkflowsTech_Implementation of Complex ITIM Workflows
Tech_Implementation of Complex ITIM Workflows51 lecture
 
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010Arun Gupta
 
Java Servlets
Java ServletsJava Servlets
Java ServletsNitin Pai
 
uPortal Roadmap
uPortal RoadmapuPortal Roadmap
uPortal Roadmapkweiner
 
Advanced java
Advanced java Advanced java
Advanced java NA
 
Effective out-of-container Integration Testing
Effective out-of-container Integration TestingEffective out-of-container Integration Testing
Effective out-of-container Integration TestingSam Brannen
 
Best Practices - PHP and the Oracle Database
Best Practices - PHP and the Oracle DatabaseBest Practices - PHP and the Oracle Database
Best Practices - PHP and the Oracle DatabaseChristopher Jones
 
Build, logging, and unit test tools
Build, logging, and unit test toolsBuild, logging, and unit test tools
Build, logging, and unit test toolsAllan Huang
 
Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Ryan Cuprak
 

What's hot (20)

.NET Core, ASP.NET Core Course, Session 16
.NET Core, ASP.NET Core Course, Session 16.NET Core, ASP.NET Core Course, Session 16
.NET Core, ASP.NET Core Course, Session 16
 
.NET Core, ASP.NET Core Course, Session 7
.NET Core, ASP.NET Core Course, Session 7.NET Core, ASP.NET Core Course, Session 7
.NET Core, ASP.NET Core Course, Session 7
 
.NET Core, ASP.NET Core Course, Session 10
.NET Core, ASP.NET Core Course, Session 10.NET Core, ASP.NET Core Course, Session 10
.NET Core, ASP.NET Core Course, Session 10
 
.NET Core, ASP.NET Core Course, Session 18
 .NET Core, ASP.NET Core Course, Session 18 .NET Core, ASP.NET Core Course, Session 18
.NET Core, ASP.NET Core Course, Session 18
 
.NET Core, ASP.NET Core Course, Session 19
 .NET Core, ASP.NET Core Course, Session 19 .NET Core, ASP.NET Core Course, Session 19
.NET Core, ASP.NET Core Course, Session 19
 
Spring hibernate tutorial
Spring hibernate tutorialSpring hibernate tutorial
Spring hibernate tutorial
 
24 collections framework interview questions
24 collections framework interview questions24 collections framework interview questions
24 collections framework interview questions
 
Hibernate Developer Reference
Hibernate Developer ReferenceHibernate Developer Reference
Hibernate Developer Reference
 
Spring notes
Spring notesSpring notes
Spring notes
 
Tech_Implementation of Complex ITIM Workflows
Tech_Implementation of Complex ITIM WorkflowsTech_Implementation of Complex ITIM Workflows
Tech_Implementation of Complex ITIM Workflows
 
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010
 
2007 Zend Con Mvc Edited Irmantas
2007 Zend Con Mvc Edited Irmantas2007 Zend Con Mvc Edited Irmantas
2007 Zend Con Mvc Edited Irmantas
 
Java Servlets
Java ServletsJava Servlets
Java Servlets
 
uPortal Roadmap
uPortal RoadmapuPortal Roadmap
uPortal Roadmap
 
Extending Zend_Tool
Extending Zend_ToolExtending Zend_Tool
Extending Zend_Tool
 
Advanced java
Advanced java Advanced java
Advanced java
 
Effective out-of-container Integration Testing
Effective out-of-container Integration TestingEffective out-of-container Integration Testing
Effective out-of-container Integration Testing
 
Best Practices - PHP and the Oracle Database
Best Practices - PHP and the Oracle DatabaseBest Practices - PHP and the Oracle Database
Best Practices - PHP and the Oracle Database
 
Build, logging, and unit test tools
Build, logging, and unit test toolsBuild, logging, and unit test tools
Build, logging, and unit test tools
 
Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)
 

Similar to .NET Core, ASP.NET Core Course, Session 2

Introduction to dot net
Introduction to dot netIntroduction to dot net
Introduction to dot netQIANG XU
 
C++ Windows Forms L01 - Intro
C++ Windows Forms L01 - IntroC++ Windows Forms L01 - Intro
C++ Windows Forms L01 - IntroMohammad Shaker
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher  - Demystifying the Core of .NET CoreTamir Dresher  - Demystifying the Core of .NET Core
Tamir Dresher - Demystifying the Core of .NET CoreTamir Dresher
 
Whats new in .NET for 2019
Whats new in .NET for 2019Whats new in .NET for 2019
Whats new in .NET for 2019Rory Preddy
 
.NET Core: a new .NET Platform
.NET Core: a new .NET Platform.NET Core: a new .NET Platform
.NET Core: a new .NET PlatformAlex Thissen
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele RialdiCodeFest
 
.Net Core Blimey! (16/07/2015)
.Net Core Blimey! (16/07/2015).Net Core Blimey! (16/07/2015)
.Net Core Blimey! (16/07/2015)citizenmatt
 
Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...
Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...
Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...Ajith Ramawickrama
 
.NET Core Blimey! (dotnetsheff Jan 2016)
.NET Core Blimey! (dotnetsheff Jan 2016).NET Core Blimey! (dotnetsheff Jan 2016)
.NET Core Blimey! (dotnetsheff Jan 2016)citizenmatt
 
.net Core Blimey - Smart Devs UG
.net Core Blimey - Smart Devs UG.net Core Blimey - Smart Devs UG
.net Core Blimey - Smart Devs UGcitizenmatt
 
Pottnet Meetup Essen - ASP.Net Core
Pottnet Meetup Essen - ASP.Net CorePottnet Meetup Essen - ASP.Net Core
Pottnet Meetup Essen - ASP.Net CoreMalte Lantin
 
Pottnet MeetUp Essen - ASP.Net Core
Pottnet MeetUp Essen - ASP.Net CorePottnet MeetUp Essen - ASP.Net Core
Pottnet MeetUp Essen - ASP.Net CoreMalte Lantin
 
.NET Core Blimey! (Shropshire Devs Mar 2016)
.NET Core Blimey! (Shropshire Devs Mar 2016).NET Core Blimey! (Shropshire Devs Mar 2016)
.NET Core Blimey! (Shropshire Devs Mar 2016)citizenmatt
 
.NET Core Blimey! Windows Platform User Group, Manchester
.NET Core Blimey! Windows Platform User Group, Manchester.NET Core Blimey! Windows Platform User Group, Manchester
.NET Core Blimey! Windows Platform User Group, Manchestercitizenmatt
 
Overview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardOverview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardAlex Thissen
 
WSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App Factory
WSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App FactoryWSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App Factory
WSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App FactoryWSO2
 
OroCRM Partner Technical Training: September 2015
OroCRM Partner Technical Training: September 2015OroCRM Partner Technical Training: September 2015
OroCRM Partner Technical Training: September 2015Oro Inc.
 
SOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class LibrariesSOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class LibrariesVagif Abilov
 

Similar to .NET Core, ASP.NET Core Course, Session 2 (20)

Introduction to dot net
Introduction to dot netIntroduction to dot net
Introduction to dot net
 
C++ Windows Forms L01 - Intro
C++ Windows Forms L01 - IntroC++ Windows Forms L01 - Intro
C++ Windows Forms L01 - Intro
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher  - Demystifying the Core of .NET CoreTamir Dresher  - Demystifying the Core of .NET Core
Tamir Dresher - Demystifying the Core of .NET Core
 
Whats new in .NET for 2019
Whats new in .NET for 2019Whats new in .NET for 2019
Whats new in .NET for 2019
 
.NET Core: a new .NET Platform
.NET Core: a new .NET Platform.NET Core: a new .NET Platform
.NET Core: a new .NET Platform
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
 
.Net Core Blimey! (16/07/2015)
.Net Core Blimey! (16/07/2015).Net Core Blimey! (16/07/2015)
.Net Core Blimey! (16/07/2015)
 
Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...
Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...
Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...
 
.NET Core Blimey! (dotnetsheff Jan 2016)
.NET Core Blimey! (dotnetsheff Jan 2016).NET Core Blimey! (dotnetsheff Jan 2016)
.NET Core Blimey! (dotnetsheff Jan 2016)
 
TechTalk: Connext DDS 5.2.
TechTalk: Connext DDS 5.2.TechTalk: Connext DDS 5.2.
TechTalk: Connext DDS 5.2.
 
.net Core Blimey - Smart Devs UG
.net Core Blimey - Smart Devs UG.net Core Blimey - Smart Devs UG
.net Core Blimey - Smart Devs UG
 
Pottnet Meetup Essen - ASP.Net Core
Pottnet Meetup Essen - ASP.Net CorePottnet Meetup Essen - ASP.Net Core
Pottnet Meetup Essen - ASP.Net Core
 
Pottnet MeetUp Essen - ASP.Net Core
Pottnet MeetUp Essen - ASP.Net CorePottnet MeetUp Essen - ASP.Net Core
Pottnet MeetUp Essen - ASP.Net Core
 
.NET Core Blimey! (Shropshire Devs Mar 2016)
.NET Core Blimey! (Shropshire Devs Mar 2016).NET Core Blimey! (Shropshire Devs Mar 2016)
.NET Core Blimey! (Shropshire Devs Mar 2016)
 
.NET Core Blimey! Windows Platform User Group, Manchester
.NET Core Blimey! Windows Platform User Group, Manchester.NET Core Blimey! Windows Platform User Group, Manchester
.NET Core Blimey! Windows Platform User Group, Manchester
 
Overview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardOverview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform Standard
 
WSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App Factory
WSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App FactoryWSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App Factory
WSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App Factory
 
.Net Standard 2.0
.Net Standard 2.0.Net Standard 2.0
.Net Standard 2.0
 
OroCRM Partner Technical Training: September 2015
OroCRM Partner Technical Training: September 2015OroCRM Partner Technical Training: September 2015
OroCRM Partner Technical Training: September 2015
 
SOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class LibrariesSOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class Libraries
 

More from aminmesbahi

How to choose appropriate technology for product development - Persian Version
How to choose appropriate technology for product development - Persian VersionHow to choose appropriate technology for product development - Persian Version
How to choose appropriate technology for product development - Persian Versionaminmesbahi
 
How to choose appropriate technology for product development
How to choose appropriate technology for product developmentHow to choose appropriate technology for product development
How to choose appropriate technology for product developmentaminmesbahi
 
Python + Machine Learning Course, Session 2
Python + Machine Learning Course, Session 2Python + Machine Learning Course, Session 2
Python + Machine Learning Course, Session 2aminmesbahi
 
Python + Machine Learning Course, Session 1
Python + Machine Learning Course, Session 1Python + Machine Learning Course, Session 1
Python + Machine Learning Course, Session 1aminmesbahi
 
.NET Core, ASP.NET Core Course, Session 15
.NET Core, ASP.NET Core Course, Session 15.NET Core, ASP.NET Core Course, Session 15
.NET Core, ASP.NET Core Course, Session 15aminmesbahi
 
.NET Core, ASP.NET Core Course, Session 14
.NET Core, ASP.NET Core Course, Session 14.NET Core, ASP.NET Core Course, Session 14
.NET Core, ASP.NET Core Course, Session 14aminmesbahi
 
.NET Core, ASP.NET Core Course, Session 13
.NET Core, ASP.NET Core Course, Session 13.NET Core, ASP.NET Core Course, Session 13
.NET Core, ASP.NET Core Course, Session 13aminmesbahi
 
.NET Core, ASP.NET Core Course, Session 11
.NET Core, ASP.NET Core Course, Session 11.NET Core, ASP.NET Core Course, Session 11
.NET Core, ASP.NET Core Course, Session 11aminmesbahi
 
.NET Core, ASP.NET Core Course, Session 8
.NET Core, ASP.NET Core Course, Session 8.NET Core, ASP.NET Core Course, Session 8
.NET Core, ASP.NET Core Course, Session 8aminmesbahi
 
A comparative study of process templates in team
A comparative study of process templates in teamA comparative study of process templates in team
A comparative study of process templates in teamaminmesbahi
 
SQL server 2016 New Features
SQL server 2016 New FeaturesSQL server 2016 New Features
SQL server 2016 New Featuresaminmesbahi
 

More from aminmesbahi (11)

How to choose appropriate technology for product development - Persian Version
How to choose appropriate technology for product development - Persian VersionHow to choose appropriate technology for product development - Persian Version
How to choose appropriate technology for product development - Persian Version
 
How to choose appropriate technology for product development
How to choose appropriate technology for product developmentHow to choose appropriate technology for product development
How to choose appropriate technology for product development
 
Python + Machine Learning Course, Session 2
Python + Machine Learning Course, Session 2Python + Machine Learning Course, Session 2
Python + Machine Learning Course, Session 2
 
Python + Machine Learning Course, Session 1
Python + Machine Learning Course, Session 1Python + Machine Learning Course, Session 1
Python + Machine Learning Course, Session 1
 
.NET Core, ASP.NET Core Course, Session 15
.NET Core, ASP.NET Core Course, Session 15.NET Core, ASP.NET Core Course, Session 15
.NET Core, ASP.NET Core Course, Session 15
 
.NET Core, ASP.NET Core Course, Session 14
.NET Core, ASP.NET Core Course, Session 14.NET Core, ASP.NET Core Course, Session 14
.NET Core, ASP.NET Core Course, Session 14
 
.NET Core, ASP.NET Core Course, Session 13
.NET Core, ASP.NET Core Course, Session 13.NET Core, ASP.NET Core Course, Session 13
.NET Core, ASP.NET Core Course, Session 13
 
.NET Core, ASP.NET Core Course, Session 11
.NET Core, ASP.NET Core Course, Session 11.NET Core, ASP.NET Core Course, Session 11
.NET Core, ASP.NET Core Course, Session 11
 
.NET Core, ASP.NET Core Course, Session 8
.NET Core, ASP.NET Core Course, Session 8.NET Core, ASP.NET Core Course, Session 8
.NET Core, ASP.NET Core Course, Session 8
 
A comparative study of process templates in team
A comparative study of process templates in teamA comparative study of process templates in team
A comparative study of process templates in team
 
SQL server 2016 New Features
SQL server 2016 New FeaturesSQL server 2016 New Features
SQL server 2016 New Features
 

Recently uploaded

The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...kalichargn70th171
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 

Recently uploaded (20)

The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 

.NET Core, ASP.NET Core Course, Session 2

  • 1. .NET Core + ASP.NET Core Training Course Session 2
  • 2. .NET Core What we learned? Session 1 Overview • The history of .NET Framework • .NET Framework position among it’s competitors • Why .NET Core? • .NET Core Components (CoreFX, CLR) • .NET CLI • .NET Core Deployment Models (Portable Apps, Self-contained Apps) • .NET Core project structure • .NET Core Comparison with .NET Framework
  • 3. .NET Core What we’ll learn today? Session 2 Agenda • Introducing .NET Standard • Managing Package Dependency Versions • .NET Portability Analyzer • .NET Core Tools • Telemetry • Overview on Extensibility Model • Dotnet-new • Dotnet-restore • Dotnet-run • Dotnet-build • Dotnet-test • Dotnet-pack • dotnet-publish • dotnet-install-script • project.json • global.json
  • 4. .NET Core Introducing .NET Standard Introducing .NET Standard The .NET Standard Library is a formal specification of .NET APIs that are intended to be available on all .NET runtimes. The motivation behind the Standard Library is establishing greater uniformity in the .NET ecosystem. The .NET Standard Library enables the following key scenarios: • Defines uniform set of BCL APIs for all .NET platforms to implement, independent of workload. • Enables developers to produce portable libraries that are usable across .NET runtimes, using this same set of APIs. • Reduces and hopefully eliminates conditional compilation of shared source due to .NET APIs, only for OS APIs.
  • 5. .NET Core Managing Package Dependency Versions Managing Package Dependency Versions Glossary Fix - Fixing dependencies means you are using the same "family" of packages released on NuGet for .NET Core 1.0. Metapackage - A NuGet package that represents a set of NuGet packages. Trimming - The act of removing the packages you do not depend on from a metapackage. This is something relevant for NuGet package authors.
  • 6. .NET Core Managing Package Dependency Versions Managing Package Dependency Versions Fix your dependencies to .NET Core 1.0 To reliably restore packages and write reliable code, it's important that you fix your dependencies to the versions of packages shipping alongside .NET Core 1.0. This means every package should have a single version with no additional qualifiers. Examples of packages fixed to 1.0 • "System.Collections":"4.0.11" • "NETStandard.Library":"1.6.0" • "Microsoft.NETCore.App":"1.0.0" Examples of packages that are NOT fixed to 1.0 • "Microsoft.NETCore.App":"1.0.0-rc4-00454-00" • "System.Net.Http":"4.1.0-*" • "System.Text.RegularExpressions":"4.0.10-rc3-24021-00" Packages and Version Numbers organized by Metapackage List of all .NET Standard library packages and their versions for 1.0. List of all runtime packages and their versions for 1.0. List of all .NET Core application packages and their versions for 1.0.
  • 7. .NET Core .NET Portability Analyzer .NET Portability Analyzer The goal of these tools is to help identify possible problem areas in an assembly and help direct targeted testing, by identifying APIs that: • Are not portable to specific platforms • Have breaking changes between 4.x versions Usage: ApiPort.exe analyze <options> -f, --file=VALUE [Required] Path to assembly file or directory of assemblies. -o, --out=VALUE Output file name -d, --description=VALUE Description of the submission -t, --target=VALUE The target you want to check against. -r, --resultFormat=VALUE The report output format -p, --showNonPortableApis Calculate non-portable APIs -b, --showBreakingChanges Calculate breaking changes on full .NET Framework -u, --showRetargettingIssues Include the retargetting issues in the reports --noDefaultIgnoreFile Do not use the standard assembly ignore list when analyzing breaking changes. The default ignore list can be found at KnownSafeBreaks.json
  • 8. .NET Core .NET Portability Analyzer .NET Portability Analyzer Portability Service APIPort VS Extenstion ApiPort.exe analyze -f foo.dll -t ".NET CORE, Version=5.0" -t ".NET Framework" -r HTML ApiPort.exe listTargets ApiPort.exe listOutputFormats See the data being transmitted Run the tool in an offline mode using System; using System.Runtime.Serialization; namespace Application { #if DESKTOP [Serializable] #endif public class SomeCustomException : Exception { public SomeCustomException() { } #if DESKTOP protected SomeCustomException(SerializationInfo info, StreamingContext context) : base(info, context) { } #endif } }
  • 9. .NET Core Telemetry .NET Core Tools Telemetry The .NET Core tools include a telemetry feature so that the .NET Team can collect usage information about the .NET Core Tools. Telemetry is only in the tools and does not affect any app. • The telemetry feature is on by default • The data collected is anonymous in nature • The data will be published in an aggregated form • Microsoft and community engineers receive data under a Creative Commons license • opt-out with environment variable: DOTNET_CLI_TELEMETRY_OPTOUT
  • 10. .NET Core Telemetry .NET Core Tools Telemetry The feature collects the following pieces of data: • The command being used (for example, “build”, “restore”) • Arguments passed to the command • The ExitCode of the command • For test projects, the test runner being used • The timestamp of invocation • The framework used • Whether runtime IDs are present in the “runtimes” node • The CLI version being used The feature will not collect any personal data, such as usernames or emails It’s based on End User License Agreement (EULA)
  • 11. .NET Core .NET Core CLI extensibility model .NET Core CLI extensibility model How to extend CLI tools? The CLI tools can be extended in two main ways (one or both): • Via NuGet packages on a per-project basis • Via the system's PATH Per-project tools are portable console applications that are distributed as NuGet packages. Tools are only available in the context of the project that references them and for which they are restored; invocation outside of the context of the project (for example, outside of the directory that contains the project) will fail as the command will not be able to be found. EF, Web, etc. Consuming these tools requires you to add a tools node to your project.json.
  • 12. .NET Core .NET Core CLI extensibility model .NET Core CLI extensibility model PATH-based extensibility is usually used for development machines where you need a tool that conceptually covers more than a single project. dotnet driver can run any command that is named after the dotnet <command> convention. The default resolution logic will first probe several locations and will finally fall to the system PATH. If the requested command exists in the system PATH and is a binary that can be invoked, dotnet driver will invoke it. dotnet-clean /usr/local/bin/
  • 13. .NET Core dotnet-new .NET Core Tools dotnet-new dotnet-new -- Creates a new .NET Core project • SYNOPSIS: dotnet new [--type] [--lang] • Invoked in the context of a directory 1. A Program.cs (or Program.fs) file that contains a sample "Hello World" program. 2. A valid project.json file. • Options: -l, --lang [C#|F#] Defaults to C#. csharp (fsharp) or cs (fs) are also valid options. • Options: -t, --type Valid values are console, web, lib and xunittest dotnet new dotnet new --lang f# dotnet new --lang c# dotnet new -t web
  • 14. .NET Core dotnet-restore .NET Core Tools dotnet-restore dotnet-restore - Restores the dependencies and tools of a project • SYNOPSIS: dotnet restore [--source] [--packages] [--disable-parallel] [--fallbacksource] [-- configfile] [--verbosity] [<root>] • Uses NuGet to restore dependencies as well as project-specific tools that are specified in the project.json • By default, the restoration of dependencies and tools are done in parallel • NuGet needs the feeds where the packages are located, location is in NuGet.config • Uses specific NuGet.config file should be in the project directory • For dependencies, use the --packages argument, if not specified, the default NuGet package cache is used. It is found in the .nuget/packages directory in the user's home directory on all operating systems (for example, /home/user1 on Linux or C:Usersuser1 on Windows)
  • 15. .NET Core dotnet-restore .NET Core Tools dotnet-restore OPTIONS: • [root] A list of projects or project folders to restore. The list can contain either a path to a project.json file, or a path to global.json file or folder. The restore operation runs recursively for all subdirectories and restores for each given project.json file it finds. • -s, --source [SOURCE] Specifies a source to use during the restore operation. This overrides all of the sources specified in the NuGet.config file(s). • --packages [DIR] Specifies the directory to place the restored packages in. • --disable-parallel Disables restoring multiple projects in parallel. • -f, --fallbacksource [FEED] Specifies a fallback source that will be used in the restore operation if all other sources fail. All valid feed formats are allowed.
  • 16. .NET Core dotnet-restore .NET Core Tools dotnet-restore OPTIONS: • --configfile [FILE] Configuration file (NuGet.config) to use for the restore operation. • --verbosity [LEVEL] The verbosity of logging to use. Allowed values: Debug, Verbose, Information, Minimal, Warning, or Error. dotnet restore dotnet restore ~/projects/app1/project.json dotnet restore --f c:packagesmypackages dotnet restore --verbosity Error
  • 17. .NET Core dotnet-run .NET Core Tools dotnet-run dotnet-run -- Runs source code 'in-place' without any explicit compile or launch commands. • SYNOPSIS: dotnet run [--framework] [--configuration] [--project] [--help] [--] • This command is useful for fast iterative development (can also be used to run a source-distributed program (website)) • Relies on dotnet build to build source inputs to a .NET assembly • Before launching the program calls dotnet build to build • Output files are written to the child bin folder, which will be created if it doesn't exist • Temporary files are written to the child obj folder • In case of multiple specified frameworks, dotnet run will first select the .NET Core frameworks • To specify other frameworks, use the --framework argument • dotnet run command works with projects, not built assemblies
  • 18. .NET Core dotnet-run .NET Core Tools dotnet-run Options: • -- Delimits arguments to dotnet run from arguments for the application being run. All arguments after this one will be passed to the application being run • -f, --framework [FID] Runs the application for a given framework identifier (FID) • -c, --configuration [Debug|Release] Configuration to use when publishing. The default value is "Debug" • -p, --project [PATH] Specifies which project to run. It can be a path to a project.json file or to a directory containing a project.json file. It defaults to current directory if not specified dotnet run dotnet run --project /projects/proj1/project.json dotnet run --configuration Release -- --help
  • 19. .NET Core dotnet-build .NET Core Tools dotnet-build dotnet-build -- Builds a project and all of its dependencies • SYNOPSIS: dotnet build [--output] [--build-base-path] [--framework] [--configuration] [--runtime] [-- version-suffix] [--build-profile] [--no-incremental] [--no-dependencies] [<project>] • The binary will be in Intermediate Language (IL) by default and will have a DLL extension • dotnet build will also drop a *.deps file which outlines what the host needs to run the application • Building requires the existence of a lock file, which means that you have to run dotnet restore prior to building your code • Before any compilation begins, the build verb analyzes the project and its dependencies for incremental safety checks • If all checks pass, then build proceeds with incremental compilation of the project and its dependencies; otherwise, it falls back to non-incremental compilation
  • 20. .NET Core dotnet-build .NET Core Tools dotnet-build All projects in the dependency graph that need compilation must pass the following safety checks in order for the compilation process to be incremental: • not use pre/post compile scripts • not load compilation tools from PATH (for example, resgen, compilers) • use only known compilers (csc, vbc, fsc) In order to build an executable application, you need a special configuration section in your project.json file: { "compilerOptions": { "emitEntryPoint": true } }
  • 21. .NET Core dotnet-build .NET Core Tools dotnet-build OPTIONS: • -o, --output [DIR]: Directory in which to place the built binaries. • -b, --build-base-path [DIR]: Directory in which to place temporary outputs. • -f, --framework [FRAMEWORK]: Compiles for a specific framework. Needs to be defined in the project.json file. • -c, --configuration [Debug|Release]: Defines a configuration under which to build. If omitted, it defaults to Debug. • -r, --runtime [RUNTIME_IDENTIFIER]: Target runtime to build for. • --version-suffix [VERSION_SUFFIX]: Defines what * should be replaced with in the version field in the project.json file. • --build-profile: Prints out the incremental safety checks that users need to address in order for incremental compilation • --no-incremental: Marks the build as unsafe for incremental build. forces a clean rebuild of the project dependency graph. • --no-dependencies: Ignores project-to-project references and only builds the root project specified to build.
  • 22. .NET Core dotnet-test .NET Core Tools dotnet-test dotnet-test - Runs unit tests using the configured test runner • SYNOPSIS: dotnet test [--configuration] [--output] [--build-base-path] [--framework] [--runtime] [--no- build] [--parentProcessId] [--port] [<project>] • Unit tests are class library projects that have dependencies on the unit test framework (NUnit or xUnit) and the dotnet test runner for that unit testing framework, These are packaged as NuGet packages and are restored as ordinary dependencies for the project • Test projects need to specify a test runner property in project.json using the "testRunner" node. This value should contain the name of the unit test framework.
  • 23. .NET Core dotnet-test .NET Core Tools dotnet-test { "version": "1.0.0-*", "buildOptions": { "debugType": "portable" }, "dependencies": { "System.Runtime.Serialization.Primitives": "4.1.1", "xunit": "2.1.0", "dotnet-test-xunit": "1.0.0-rc2-192208-24" }, "testRunner": "xunit", "frameworks": { "netcoreapp1.0": { "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.0.0“ } }, "imports": [ "dotnet5.4", "portable-net451+win8" ] } } } dotnet test supports two running modes: 1. Console: In console mode, dotnet test simply executes fully any command gets passed to it and outputs the results. Anytime you invoke dotnet test without passing --port, it runs in console mode, which in turn will cause the runner to run in console mode. 2. Design time: used in the context of other tools, such as editors or Integrated Development Environments (IDEs). dotnet test dotnet test /projects/test1/project.json
  • 24. .NET Core dotnet-test .NET Core Tools dotnet-test OPTIONS • [project]: Specifies a path to the test project. If omitted, it defaults to current directory. • -c, --configuration [Debug|Release]: Configuration under which to build. The default value is Release. • -o, --output [DIR]: Directory in which to find binaries to run. • -b, --build-base-path [DIR]: Directory in which to place temporary outputs. • -f, --framework [FRAMEWORK]: Looks for test binaries for a specific framework. • -r, --runtime [RUNTIME_IDENTIFIER]: Look for test binaries for a for the specified runtime. • --no-build: Does not build the test project prior to running it. • --parentProcessId: Used by IDEs to specify their process ID. Test will exit if the parent process does. • --port: Used by IDEs to specify a port number to listen for a connection.
  • 25. .NET Core dotnet-pack .NET Core Tools dotnet-pack dotnet-pack - Packs the code into a NuGet package • SYNOPSIS: dotnet pack [--output] [--no-build] [--build-base-path] [--configuration] [--version-suffix] [<project>] • The dotnet pack command builds the project and creates NuGet packages • The result is two packages with the nupkg extension. One contains the code and the other contains the debug symbols • NuGet dependencies of the project being packed are added to the nuspec file • Project-to-project references are not packaged inside the project by default, for doing this, reference the required project in dependencies node with a type set to "build"
  • 26. .NET Core dotnet-pack .NET Core Tools dotnet-pack OPTIONS • [project]: The project to pack. It can be either a path to a project.json file or to a directory. If omitted, the current directory. • -o, --output [DIR]: Places the built packages in the directory specified. • --no-build: Skips the building phase of the packing process. useful in Continuous Integration (CI) build scenarios in which you know the code was just previously built. • --build-base-path: Places the temporary build artifacts in the specified directory. Default: obj directory in the current directory. • -c, --configuration [Debug|Release]: Configuration to use when building the project. If not specified, "Debug". dotnet pack dotnet pack ~/projects/app1/project.json dotnet pack --output nupkgs dotnet pack --no-build --output nupkgs
  • 27. .NET Core dotnet-publish .NET Core Tools dotnet-publish dotnet-publish - Packs the application and all of its dependencies into a folder getting it ready for publishing • SYNOPSIS: dotnet publish [--framework] [--runtime] [--build-base-path] [--output] [--version-suffix] [-- configuration] [<project>] • compiles the application, reads through its dependencies specified in the project.json file and publishes the resulting set of files to a directory • Depending on the type of portable app, the resulting directory will contain the following: 1. Portable application - application's intermediate language (IL) code and all of application's managed dependencies. • Portable application with native dependencies - same as above with a sub-directory for the supported platform of each native dependency. 2. Self-contained application - same as above plus the entire runtime for the targeted platform.
  • 28. .NET Core dotnet-publish .NET Core Tools dotnet-publish OPTIONS • [project]: needs access to the project.json file to work. If it is not specified, default is current directory. • -f, --framework [FID]: Publishes the application for a given framework identifier (FID). If not specified, reads from project.json • -r, --runtime [RID]: Publishes the application for a given runtime • -b, --build-base-path [DIR]: Directory in which to place temporary outputs. • -o, --output: Specify the path where to place the directory. If not specified, it will default to ./bin/[configuration]/[framework]/ for portable applications ./bin/[configuration]/[framework]/[runtime] for self-contained applications. • --version-suffix [VERSION_SUFFIX]: Defines what * should be replaced with in the version field in the project.json file. • -c, --configuration [Debug|Release]: Configuration to use when publishing. The default value is Debug.
  • 29. .NET Core dotnet-publish .NET Core Tools dotnet-publish dotnet publish Publishes an application using the framework found in project.json. If project.json contains runtimes node, publish for the RID of the current platform. dotnet publish ~/projects/app1/project.json Publishes the application using the specified project.json. dotnet publish --framework netcoreapp1.0 Publishes the current application using the netcoreapp1.0 framework. dotnet publish --framework netcoreapp1.0 --runtime osx.10.11-x64 Publishes the current application using the netcoreapp1.0 framework and runtime for OS X 10.10. This RID has to exist in the project.json runtimes node.
  • 30. .NET Core dotnet-install scripts reference .NET Core Tools dotnet-install scripts reference dotnet-install.ps1 | dotnet-install.sh - script used to install the Command Line Interface (CLI) tools and shared runtime SYNOPSIS: • Windows: dotnet-install.ps1 [-Channel] [-Version] [-InstallDir] [-Debug] [-NoPath] [-SharedRuntime] • OS X/Linux: dotnet-install.sh [--channel] [--version] [--install-dir] [--debug] [--no-path] [--shared-runtime] The dotnet-install scripts are used to perform a non-admin install of the CLI toolchain and the shared runtime. You can download the scripts from our CLI GitHub repo. (ZIP/tarball). By default, SDK will downloaded. Bash script also "understands" PowerShell switches.
  • 31. .NET Core dotnet-install scripts reference .NET Core Tools dotnet-install scripts reference Options PowerShell (Windows) -Channel [CHANNEL]: Which channel (for example, "future", "preview", "production") to install from. default: "Production". -Version [VERSION]: Version of CLI to install; 3-part version (i.e. 1.0.0-13232). If omitted, default: first global.json that contains the sdkVersion property; if not presents, it will use Latest. -InstallDir [DIR]: Path to install to. The directory is created if it doesn't exist. The default value is %LocalAppData%.dotnet. -Debug: true to indicate that larger packages containing debugging symbols should be used; otherwise, false. The default value is false. -NoPath: true to indicate that the prefix/installdir are not exported to the path for the current session; otherwise, false. The default value is false, that is, the PATH is modified. This makes the CLI tools available immediately after install. -SharedRuntime: true to install just the shared runtime bits; false to install the entire SDK. The default value is false.
  • 32. .NET Core dotnet-install scripts reference .NET Core Tools dotnet-install scripts reference Options Bash (OS X/Linux) --channel [CHANNEL]: Which channel (for example "future", "preview", "production") to install from. The default value is "Production". --version [VERSION]: Which version of CLI to install; version as 3-part version (i.e. 1.0.0-13232). If omitted default is the first global.json that contains the sdkVersion property; if that is not present, it will use Latest. --install-dir [DIR]: Path to where to install. The directory is created if it doesn't exist. The default value is $HOME/.dotnet. --debug: true to indicate that larger packages containing debugging symbols should be used; otherwise, false. The default value is false. --no-path: true to indicate that the prefix/installdir are not exported to the path for the current session; otherwise, false. The default value is false, that is, the PATH is modified. This makes the CLI tools available immediately after install. --shared-runtime: true to install just the shared runtime bits; false to install the entire SDK. The default value is false.
  • 33. .NET Core dotnet-install scripts reference .NET Core Tools dotnet-install scripts reference EXAMPLES Windows: ./dotnet-install.ps1 -Channel Future OS X/Linux: ./dotnet-install.sh --channel Future Installs the dev latest version to the default location. Windows: ./dotnet-install.ps1 -Channel preview -InstallDir C:cli OS X/Linux: ./dotnet-install.sh --channel preview --install-dir ~/cli
  • 34. .NET Core project.json reference .NET Core Tools project.json reference name version summary description copyright title entryPoint projectUrl licenseUrl iconUrl compilerName testRunner authors owners tags language releaseNotes requireLicenseAcceptance embedInteropTypes compile content Resource preprocess publishExclude shared namedResource packInclude exclude contentBuiltIn compileBuiltIn resourceBuiltIn excludeBuiltIn dependencies tools commands scripts compilationOptions analyzerOptions configurations frameworks
  • 35. .NET Core project.json Example: .NET Core Tools project.json
  • 36. .NET Core project.json Example: .NET Core Tools project.json
  • 37. .NET Core project.json Example: .NET Core Tools project.json
  • 38. .NET Core global.json reference .NET Core Tools global.json reference projects Type: String[] Specifies what folders the build system should search for projects when resolving dependencies. The build system will only search top level child folders. packages Type: String[] The folder to store packages.