C# ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π΄Π»Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ C# Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΡΠ°Π½ΡΡ ΡΠ°ΡΡΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ VS.NET. ΠΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ²Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°ΡΡΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠ΄ΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ Π² Π Π (portable executable β ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠΉ ΠΈΡΠΏΠΎΠ»Π½ΠΈΠΌΡΠΉ) ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π°. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ΄ΠΎΠ², ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ΄Π΅Ρ ΡΠ΅ΡΡ, ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Class Library Π² C#, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ IDE VS.NET. ΠΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² C#, ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠ°ΠΉΠ» Π Π, Π° Π½Π΅ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΡΡ DLL ΠΈΠ»ΠΈ ΠΠ₯Π. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΠ΄Π° ΡΠ°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ±ΠΎΡΠΊΠΎΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΡΠ°Π½ΠΈΡΡ.
Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ» JAR, ΡΠ±ΠΎΡΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅. ΠΠ°Π½ΠΈΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ C# Π΄Π΅Π»Π°Π΅Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅. ΠΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ (ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠ°Ρ, ΠΊΠ°ΠΊ ΡΠ²ΡΠ·Π°Π½Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ±ΠΎΡΠΊΠΈ), Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ Π²ΡΠ΅ΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΠ»ΡΠΆΠ°ΡΠ΅ΠΉ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΊΠ»Π°ΡΡΡ. ΠΠ°Π½ΠΈΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π»ΠΈΠ±ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ Π Π (ΠΠ₯Π ΠΈΠ»ΠΈ DLL) Ρ ΠΊΠΎΠ΄ΠΎΠΌ IL, Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° ΡΠ±ΠΎΡΠΊΠΈ. Π .NET ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ΡΡ Π²Π½ΡΡΡΠΈ ΡΠ±ΠΎΡΠΊΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π²Π½Π΅ΡΠ½Π΅ΠΌΡ ΠΌΠΈΡΡ (ΡΠΎ Π΅ΡΡΡ, Π»ΡΠ±ΡΠΌ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΌ ΡΠ±ΠΎΡΠΊΠΈ, ΡΠ°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ±ΠΎΡΠΊΠΈ) Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΠΎ ΡΠΈΠΏΠ°Ρ , Ρ ΡΠ°Π½ΡΡΠ΅ΠΉΡΡ Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ.
ΠΠ»Π°ΡΡΡ Π² namespace_samples.cs ΠΌΠΎΠ³ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
CSC /target:library /out:FirstLibrary.dll namespace_samples.cs
Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ°Ρ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ±ΠΎΡΠΎΠΊ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²Π° ΠΊΠ»ΡΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°: /addmodule ΠΈ /reference. ΠΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎ ΡΡΡΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ /reference ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ±ΠΎΡΠΎΠΊ Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΎΠΌ ΡΠ±ΠΎΡΠΊΠΈ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ /addmodule ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ±ΠΎΡΠΎΠΊ Π±Π΅Π· ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° ΡΠ±ΠΎΡΠΊΠΈ (ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° ΡΠ±ΠΎΡΠΊΠΈ). Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΡΡΠ»ΠΎΠΊ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
csc /reference: <lib.dll>; <libn.cs> <filename.exe>
ΠΈΠ»ΠΈ:
csc /addmodule: <lib.dll>; <libn.cs> <filename.exe>
Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠΎΠ³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ VS.NET, ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ΅Π»ΡΠΎΠΊ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ Π½Π° ΠΏΠ°ΠΏΠΊΠ΅ References ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² Solution Explorer ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Add Reference. ΠΠΎΡΠ²ΠΈΡΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ ΡΡΠ΄ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΡΡΠ»ΠΎΠΊ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΠΏΠΎΠΈΡΠΊΠ°Ρ ΡΡΡΠ»ΠΎΠΊ. ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π²ΡΠ±ΠΈΡΠ°Ρ ΠΏΡΠ½ΠΊΡ Add Reference ΠΈΠ· ΠΌΠ΅Π½Ρ Project, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΄Π΅Π»Π΅Π½ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π² ΡΠ΅ΠΊΡΡΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠΉ ΡΠ°ΠΉΠ» Π² ΠΏΠ°ΠΏΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½ΠΎΠ²Π°Ρ ΡΠ±ΠΎΡΠΊΠ°.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ AddLib, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΠΏΠΎ ΡΠΎΡΠΌΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠ°Π½Π΅Π΅ ΠΊΠ»Π°ΡΡΡ JavaFrame:
// LibConsumer.cs
namespace Com.CSapp {
using System;
using System.Windows.Forms;
using Com.CsLib;
public class Form1 : System.Windows.Forms.Form {
public Form1() {
AddLib al = new AddLib();
this.Text = "C# Form version " + al.operationAdd(12, 23);
}
public override void Dispose() {
base.Dispose();
}
Static void Main(string[] args) {
Form1 f1 = new Form1();
Application.Run(f1);
}
}
}
ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠΎ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° FirstLibrary.dll, Π²Π²Π΅Π΄Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
csc /reference: FirstLibrary.dll /target:exe /out:EmptyForm.exe LibConsumer.cs
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ VS.NET, Π½Π°Π΄ΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΡΠΎΡΠ»Π°ΡΡΡΡ Π½Π° FirstLibrary.dll, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΡΠ°Π½Π΅Π΅, ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠΎΠ±ΡΠ°Π½ΠΎ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π΅Π³ΠΎ. ΠΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΡΠΌΡ Windows Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ C# form Version 35.
ΠΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅
ΠΡ ΡΠΆΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ JRE ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ ΠΊΠ»Π°ΡΡΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Classpath. CLR ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ΄ ΡΠ°Π³ΠΎΠ², ΡΠ°ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ Π·ΠΎΠ½Π΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (probing), ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π½Π°ΠΉΡΠΈ ΡΠ±ΠΎΡΠΊΡ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ±ΠΎΡΠΊΡ. ΠΠΎΠΏΡΡΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ EmptyForm.exe ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΄ Π²Π΅ΡΠ΅ΠΉ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²Π΅ΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π² Π΄ΠΎΠΌΠ΅Π½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. Π£ΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, ΠΎΠ·Π½Π°ΡΠ°ΡΡΠΈΠ΅, ΡΡΠΎ ΠΈΡ ΡΠΈΠΏΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΊΠΎΠ΄Π΅ Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ. CLR ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π΄ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΠΈ ΡΠ²ΡΠ·Π°ΡΡΡΡ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΎΠΉ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠΎ ΡΠ±ΠΎΡΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΉΠ»Π° ΠΈΠ·Π΄Π°ΡΠ΅Π»Ρ ΠΈ ΡΠ°ΠΉΠ»Π° ΠΌΠ°ΡΠΈΠ½Ρ/Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°, CLR Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΠ°ΡΡ ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ. ΠΡΠ΅ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° XML ΠΈ ΡΠ»Π΅Π΄ΡΡΡ ΠΏΠΎΡ ΠΎΠΆΠ΅ΠΌΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ. ΠΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ°ΠΊΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ΅ΠΆΠΈΠΌΡ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠ±ΠΎΡΠΎΠΊ. ΠΠ±ΡΡΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΎΠΌ ΡΠ±ΠΎΡΠΊΠΈ.
CLR ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π»ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠ°ΡΠ΅ΠΌ CLR ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΈΠ·Π΄Π°ΡΠ΅Π»Ρ. ΠΡΠΎΡ ΡΠ°ΠΉΠ» ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ, ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π½ΠΎΠ²ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ±ΡΠ°Π»ΠΎ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. CLR Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΌΠ°ΡΠΈΠ½Ρ/Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°. Π₯ΠΎΡΡ ΠΎΠ½ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ Π² ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎ Π²ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌ. ΠΠΎ ΡΡΡΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ admin.cfg, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ, Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ.
ΠΠ°ΡΠ΅ΠΌ CLR Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡΠΈ ΡΠ±ΠΎΡΠΊΡ. Π Java JRE Π±ΡΠ΄Π΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΈ Π² classpass, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΊΠ»Π°ΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΡΠ»ΠΊΠΈ. Π ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ CLR ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ <codeBase>, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠΌΠΈ Π²ΡΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½, ΡΠΎ CLR ΠΈΡΠ΅Ρ ΡΠ°ΠΉΠ» (Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ probing) Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²ΠΎ Π²ΡΠ΅Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ , ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <probing> ΠΈ Π²ΠΎ Π²ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ ΠΊΠΎΡΠ½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΈΠΌΡ, ΠΊΠ°ΠΊ ΠΈ Π·ΠΎΠ½Π΄ΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠ±ΠΎΡΠΊΠ°. ΠΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π²ΡΠ΅Π³Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ CLR Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠ΅Ρ ΠΈΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ, ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠ΅ Ρ Π΄Π²ΡΠΌΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π Π β .exe ΠΈ .dll.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π΅ΡΠ»ΠΈ ΡΡΡΠ»ΠΊΠ° ΡΠ΄Π΅Π»Π°Π½Π° Π½Π° ΡΠ±ΠΎΡΠΊΡ Ρ ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, CLR Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ ΠΊΡΡΠ΅ ΡΠ±ΠΎΡΠΎΠΊ. Π£ΡΡΠΎΠΉΡΠΈΠ²ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΊΡΡ ΡΠ±ΠΎΡΠΎΠΊ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
Π‘ΡΡΠΎΠ³ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΊΡΡ
Π£ΡΡΠΎΠΉΡΠΈΠ²ΠΎΠ΅ (ΡΡΡΠΎΠ³ΠΎΠ΅) ΠΈΠΌΡ Π΄Π΅Π»Π°Π΅Ρ ΡΠ±ΠΎΡΠΊΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ. ΠΠ½ΠΎ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΠ±ΠΎΡΠΊΠΈ, ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΈ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ±ΠΎΡΠΊΠ°, ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΠΈΠΌΠ΅Π΅Ρ Π΄ΡΡΠ³ΠΎΠ΅ ΠΈΠΌΡ, ΡΠ΅ΠΌ ΡΠ±ΠΎΡΠΊΠ°, ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ, ΡΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ±ΠΎΡΠΊΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π°. ΠΠ΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ±ΠΎΡΠΊΡ Ρ ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½Π΅ ΠΈΠΌΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΡΠΊΡΡΡΠΎΠΌΡ ΠΊΠ»ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΏΡΠΈ Π΅Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠ΅ ΠΈΠΌΡ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΡΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ. Π£ΡΡΠΎΠΉΡΠΈΠ²ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΆΠ΅ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π²ΡΡ ΡΠ°Π³ΠΎΠ²ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ. Π‘Π½Π°ΡΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΏΠ°ΡΡ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΏΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
sn -k <ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΊΠ»ΡΡΠ°>
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» ΠΊΠ»ΡΡΠ° examplekey.key, Π½Π°Π΄ΠΎ Π²Π²Π΅ΡΡΠΈ:
sn -k examplekey.key
ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΉΠ» ΠΊΠ»ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ±ΠΎΡΠΊΠ΅ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. ΠΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΡ alink ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
al /keyfile: <ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΊΠ»ΡΡΠ°> <ΠΈΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ>
Π§ΡΠΎΠ±Ρ Π·Π°Π΄Π°ΡΡ Π΄Π»Ρ FirstLibrary.dll ΡΡΡΠΎΠ³ΠΎΠ΅ ΠΈΠΌΡ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ:
al /keyfile:examplekey.key FiretLibrary.dll
ΠΈΠ»ΠΈ Π² VS.NET ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π°ΡΡΠΈΠ±ΡΡ [assembly: AssemblyKeyFile("")] Π² ΡΠ°ΠΉΠ»Π΅ AssemblyInfo.cs. ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ Π½Π° ΡΡΡΠΎΠΊΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΊΠ»ΡΡΠ°. Π‘Π±ΠΎΡΠΊΡ FirstLibrary.dll ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΠ΅ΠΌ Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΊΠ»ΡΡΠΎΠΌ, ΠΌΠ΅Π½ΡΡ Π°ΡΡΠΈΠ±ΡΡ AssemblyKeyFile Π½Π° [assembly: AssemblyKeyFile("examplekey.key")]. ΠΠ°ΠΊΠΎΠΉ Π±Ρ ΠΌΠ΅ΡΠΎΠ΄ Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ. CLR Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΊΠ»ΡΡ Π² ΡΠ°ΠΉΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ Crypto Service Provider (CSP). Π Π°Π±ΠΎΡΠ° CSP Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.