Csharp/CSharp Tutorial/Development/Environment
Содержание
- 1 Accessing Environment Settings:
- 2 Accessing Environment Settings: Environment.CurrentDirectory and SystemDirectory
- 3 Accessing Environment Settings: Environment.MachineName and Environment.Version
- 4 Accessing Environment Settings: Environment.StackTrace
- 5 Accessing Environment Settings: Environment Variables
- 6 Accessing Environment Settings: Get OS version
- 7 Accessing Environment Settings: Logical Drives
- 8 Access the command-line arguments directly through Environment.CommandLine
- 9 Enumerate all special folders and display them
- 10 Environment.NewLine
- 11 Expand Environment Variables
- 12 Get the drives on this box
- 13 Is AppDomain Finalizing For Unload(), Environment.HasShutdownStarted
- 14 Retrieve all environment variables targeted at the process
- 15 Retrieve a named environment variable
- 16 Unload the appdomains and check the working set
- 17 WorkingSet change After loading System.dll into 10 AppDomains
- 18 WorkingSet change after loading the DLL
Accessing Environment Settings:
<source lang="csharp">using System; class MainClass {
public static void Main() { Console.WriteLine("Command Line: {0}", Environment.rumandLine); Console.WriteLine("Current Directory: {0}", Environment.CurrentDirectory); Console.WriteLine("Machine Name: {0}", Environment.MachineName); Console.WriteLine("Stack Trace: {0}", Environment.StackTrace); Console.WriteLine("System Directory: {0}", Environment.SystemDirectory); Console.WriteLine("Tick Count: {0}", Environment.TickCount); Console.WriteLine("Version: {0}", Environment.Version); Console.WriteLine("Working Set: {0}", Environment.WorkingSet); }
}</source>
Command Line: main Current Directory: C:\Java_Dev\WEB\dev\CSharp Machine Name: nfex Stack Trace: at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at MainClass.Main() System Directory: C:\WINDOWS\system32 Tick Count: 753202203 Version: 2.0.50727.42 Working Set: 6426624
Accessing Environment Settings: Environment.CurrentDirectory and SystemDirectory
<source lang="csharp">using System; class MainClass {
public static void Main() { Console.WriteLine("Current Directory: {0}", Environment.CurrentDirectory); Console.WriteLine("System Directory: {0}", Environment.SystemDirectory); }
}</source>
Current Directory: C:\Java_Dev\WEB\dev\CSharp System Directory: C:\WINDOWS\system32
Accessing Environment Settings: Environment.MachineName and Environment.Version
<source lang="csharp">using System; class MainClass {
public static void Main() { Console.WriteLine("Machine Name: {0}", Environment.MachineName); Console.WriteLine("Version: {0}", Environment.Version); }
}</source>
Machine Name: nfex Version: 2.0.50727.42
Accessing Environment Settings: Environment.StackTrace
<source lang="csharp">using System; class MainClass {
public static void Main() { Console.WriteLine("Stack Trace: {0}", Environment.StackTrace); }
}</source>
Stack Trace: at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at MainClass.Main()
Accessing Environment Settings: Environment Variables
<source lang="csharp">using System; using System.Collections; class MainClass {
public static void Main() { Console.WriteLine("Environment Variables"); foreach (DictionaryEntry var in Environment.GetEnvironmentVariables()) Console.WriteLine("{0}={1}", var.Key, var.Value); }
}</source>
Environment Variables Path=C:\Program Files\Microsoft.NET\SDK\v2.0\Bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Pr ogram Files\Microsoft Visual Studio 8\VC\bin;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE; ... ...
Accessing Environment Settings: Get OS version
<source lang="csharp">using System; class MainClass {
public static void Main(string[] args) { Console.WriteLine("Current OS:\n{0}\n", Environment.OSVersion); }
}</source>
Current OS: Microsoft Windows NT 5.1.2600 Service Pack 2
Accessing Environment Settings: Logical Drives
<source lang="csharp">using System; using System.Collections; class MainClass {
public static void Main() { Console.WriteLine("Logical Drives"); foreach (string drive in Environment.GetLogicalDrives()) Console.WriteLine(" {0}", drive); }
}</source>
Logical Drives C:\ D:\
Access the command-line arguments directly through Environment.CommandLine
<source lang="csharp">using System; class MainClass {
public static void Main(string[] args) { Console.WriteLine(Environment.rumandLine); foreach (string s in Environment.GetCommandLineArgs()) { Console.WriteLine(s); } }
}</source>
main main
Enumerate all special folders and display them
<source lang="csharp">using System; class MainClass {
public static void Main() { foreach (Environment.SpecialFolder s in Enum.GetValues(typeof(Environment.SpecialFolder))) { Console.WriteLine("{0} folder : {1}", s, Environment.GetFolderPath(s)); } }
}</source>
Desktop folder : C:\Documents and Settings\Joe\Desktop Programs folder : C:\Documents and Settings\Joe\Start Menu\Programs Personal folder : C:\Documents and Settings\Joe\My Documents Personal folder : C:\Documents and Settings\Joe\My Documents Favorites folder : C:\Documents and Settings\Joe\Favorites Startup folder : C:\Documents and Settings\Joe\Start Menu\Programs\Startup Recent folder : C:\Documents and Settings\Joe\Recent SendTo folder : C:\Documents and Settings\Joe\SendTo StartMenu folder : C:\Documents and Settings\Joe\Start Menu MyMusic folder : C:\Documents and Settings\Joe\My Documents\My Music DesktopDirectory folder : C:\Documents and Settings\Joe\Desktop MyComputer folder : Templates folder : C:\Documents and Settings\Joe\Templates ApplicationData folder : C:\Documents and Settings\Joe\Application Data LocalApplicationData folder : C:\Documents and Settings\Joe\Local Settings\Application Data InternetCache folder : C:\Documents and Settings\Joe\Local Settings\Temporary Internet Files Cookies folder : C:\Documents and Settings\Joe\Cookies History folder : C:\Documents and Settings\Joe\Local Settings\History CommonApplicationData folder : C:\Documents and Settings\All Users\Application Data System folder : C:\WINDOWS\system32 ProgramFiles folder : C:\Program Files MyPictures folder : C:\Documents and Settings\Joe\My Documents\My Pictures CommonProgramFiles folder : C:\Program Files\Common Files
Environment.NewLine
<source lang="csharp">using System; using System.IO; static class MainClass {
static void Main(string[] args) { Console.WriteLine(Environment.NewLine); }
}</source>
Expand Environment Variables
<source lang="csharp">using System; using System.Collections; class MainClass {
public static void Main() { Console.WriteLine(Environment.ExpandEnvironmentVariables( "The Path on %computername% is %Path%")); }
}</source>
The Path on nfex is C:\Program Files\Microsoft.NET\SDK\v2.0\Bin; ...
Get the drives on this box
<source lang="csharp">using System; class MainClass {
public static void Main(string[] args) { string[] drives = Environment.GetLogicalDrives(); for(int i = 0; i < drives.Length; i++) Console.WriteLine("Drive {0} : {1}", i, drives[i]); }
}</source>
Drive 0 : C:\ Drive 1 : D:\
Is AppDomain Finalizing For Unload(), Environment.HasShutdownStarted
<source lang="csharp">using System; using System.Runtime.InteropServices; using System.Diagnostics; public sealed class MainClass {
static void Main() { AppDomain currentDomain = AppDomain.CurrentDomain; if( !currentDomain.IsFinalizingForUnload() &&!Environment.HasShutdownStarted ) { Console.WriteLine( "Failed to dispose of object!!!" ); Console.WriteLine( "Object allocated at:" ); } }
}</source>
Failed to dispose of object!!! Object allocated at:
Retrieve all environment variables targeted at the process
<source lang="csharp">using System; using System.Collections; class MainClass {
public static void Main() { IDictionary vars = Environment.GetEnvironmentVariables( EnvironmentVariableTarget.Process); foreach (string s in vars.Keys) { Console.WriteLine(s + " = " + vars[s]); } }
}</source>
Path = C:\Program Files\Microsoft.NET\SDK\v2.0\Bin; ... ...
Retrieve a named environment variable
<source lang="csharp">using System; using System.Collections; class MainClass {
public static void Main() { Console.WriteLine("Path = " + Environment.GetEnvironmentVariable("Path")); }
}</source>
Path = C:\Program Files\Microsoft.NET\SDK\v2.0\Bin; ...
Unload the appdomains and check the working set
<source lang="csharp">using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; using System.Reflection; using System.Security; using System.Security.Permissions; using System.Security.Policy; public class MainClass {
public static void Main() { List<AppDomain> ads = new List<AppDomain>(); for (int i = 0; i < 10; i++) { AppDomain ad = AppDomain.CreateDomain(i.ToString()); ad.DoCallBack(delegate { Type t = typeof(Uri); }); ads.Add(ad); } Console.WriteLine("After loading System.dll into 10 AppDomains: {0}", Environment.WorkingSet); foreach (AppDomain ad in ads) AppDomain.Unload(ad); Console.WriteLine("After unloading the AppDomains: {0}", Environment.WorkingSet); }
}</source>
After loading System.dll into 10 AppDomains: 8544256 After unloading the AppDomains: 8519680
WorkingSet change After loading System.dll into 10 AppDomains
<source lang="csharp">using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; using System.Reflection; using System.Security; using System.Security.Permissions; using System.Security.Policy; public class MainClass {
public static void Main() { List<AppDomain> ads = new List<AppDomain>(); for (int i = 0; i < 10; i++) { AppDomain ad = AppDomain.CreateDomain(i.ToString()); ad.DoCallBack(delegate { Type t = typeof(Uri); }); ads.Add(ad); } Console.WriteLine("After loading System.dll into 10 AppDomains: {0}", Environment.WorkingSet); }
}</source>
After loading System.dll into 10 AppDomains: 8404992
WorkingSet change after loading the DLL
<source lang="csharp">using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; using System.Reflection; using System.Security; using System.Security.Permissions; using System.Security.Policy; public class MainClass {
public static void Main() { Console.WriteLine("Before: {0}", Environment.WorkingSet); // Loads System.dll (if it"s not already loaded): Type uriType = typeof(Uri); Console.WriteLine("After loading System.dll: {0}", Environment.WorkingSet); }
}</source>
Before: 4550656 After loading System.dll: 4964352