リビジョン 41
旧自動更新ソース
trunk/src/UpDateCopy/UpDateCopy/App.config | ||
---|---|---|
1 |
<?xml version="1.0" encoding="utf-8" ?> |
|
2 |
<configuration> |
|
3 |
<startup> |
|
4 |
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> |
|
5 |
</startup> |
|
6 |
</configuration> |
trunk/src/UpDateCopy/UpDateCopy/ClsCommon.cs | ||
---|---|---|
1 |
using System; |
|
2 |
using System.Collections.Generic; |
|
3 |
using System.IO; |
|
4 |
using System.Linq; |
|
5 |
using System.Security.Cryptography; |
|
6 |
using System.Text; |
|
7 |
using System.Threading.Tasks; |
|
8 |
|
|
9 |
namespace UpDateCopy |
|
10 |
{ |
|
11 |
public static class ClsCommon |
|
12 |
{ |
|
13 |
#region 定数 |
|
14 |
|
|
15 |
/// <summary> |
|
16 |
/// 監視対象プロセス名 |
|
17 |
/// </summary> |
|
18 |
public const string s_TargetProcess = "現場監督秘書"; |
|
19 |
/// <summary> |
|
20 |
/// パスを定数で定義する |
|
21 |
/// </summary> |
|
22 |
public const string s_UPDATE_FILE_PATH = @"Z:\52GenbaKantokuHisyo"; |
|
23 |
//public const string s_UPDATE_FILE_PATH = @"Z:\5-2現場監督秘書"; |
|
24 |
//private const string s_UPDATE_FILE_PATH = @"Z:\⑤IT事業部用\Debug"; |
|
25 |
|
|
26 |
/// <summary> |
|
27 |
/// エラーログファイル |
|
28 |
/// </summary> |
|
29 |
public const string s_ErrorFileName = @".\log\Error.txt"; |
|
30 |
|
|
31 |
#endregion |
|
32 |
|
|
33 |
/// <summary> |
|
34 |
/// エラー時ログファイル出力 |
|
35 |
/// </summary> |
|
36 |
/// <param name="message"></param> |
|
37 |
public static void ErrorLogWrite(string message) |
|
38 |
{ |
|
39 |
try |
|
40 |
{ |
|
41 |
// ディレクトリの確認 |
|
42 |
int spoint = ClsCommon.s_ErrorFileName.LastIndexOf("\\") + 1; |
|
43 |
string path = ClsCommon.s_ErrorFileName.Substring(spoint); |
|
44 |
if (Directory.Exists(@path)) |
|
45 |
Directory.CreateDirectory(@path); |
|
46 |
// ログ書込み |
|
47 |
StreamWriter writer = new StreamWriter(@ClsCommon.s_ErrorFileName, true, Encoding.GetEncoding("Shift_JIS")); |
|
48 |
writer.WriteLine("Error={0}:{1}", DateTime.Now.ToLongTimeString(), message); |
|
49 |
writer.Close(); |
|
50 |
} |
|
51 |
catch |
|
52 |
{ |
|
53 |
|
|
54 |
} |
|
55 |
} |
|
56 |
/// ファイルパスよりmd5のハッシュ値を返す |
|
57 |
/// </summary> |
|
58 |
/// <param name="FilePath"></param> |
|
59 |
/// <returns></returns> |
|
60 |
public static string GetFileHashData(string FilePath) |
|
61 |
{ |
|
62 |
try |
|
63 |
{ |
|
64 |
//ファイルを開く |
|
65 |
FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.Read); |
|
66 |
|
|
67 |
//MD5CryptoServiceProviderオブジェクトを作成 |
|
68 |
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); |
|
69 |
|
|
70 |
//ハッシュ値を計算する |
|
71 |
byte[] bs = md5.ComputeHash(fs); |
|
72 |
|
|
73 |
//リソースを解放する |
|
74 |
md5.Clear(); |
|
75 |
//ファイルを閉じる |
|
76 |
fs.Close(); |
|
77 |
|
|
78 |
return BitConverter.ToString(bs).ToLower().Replace("-", ""); |
|
79 |
|
|
80 |
} |
|
81 |
catch (Exception ex) |
|
82 |
{ |
|
83 |
ErrorLogWrite(ex.Message.ToString()); |
|
84 |
return string.Empty; |
|
85 |
} |
|
86 |
} |
|
87 |
/// <summary> |
|
88 |
/// ファイルの時間を取得する |
|
89 |
/// </summary> |
|
90 |
/// <param name="FilePath">ファイルパス</param> |
|
91 |
/// <param name="flg">取得日付フラグ</param> |
|
92 |
/// <returns></returns> |
|
93 |
public static DateTime GetFileTimeStamp(string FilePath, char flg) |
|
94 |
{ |
|
95 |
try |
|
96 |
{ |
|
97 |
DateTime dtDateTime = DateTime.MinValue; |
|
98 |
|
|
99 |
if (flg == 'C') |
|
100 |
{ |
|
101 |
// 作成日時を取得する |
|
102 |
dtDateTime = File.GetCreationTime(@FilePath); |
|
103 |
} |
|
104 |
else if (flg == 'U') |
|
105 |
{ |
|
106 |
// 更新日時を取得する |
|
107 |
dtDateTime = File.GetLastWriteTime(@FilePath); |
|
108 |
} |
|
109 |
else if (flg == 'A') |
|
110 |
{ |
|
111 |
// アクセス日時を取得する |
|
112 |
dtDateTime = File.GetLastAccessTime(@FilePath); |
|
113 |
} |
|
114 |
|
|
115 |
return dtDateTime; |
|
116 |
} |
|
117 |
catch (Exception ex) |
|
118 |
{ |
|
119 |
ErrorLogWrite(ex.Message.ToString()); |
|
120 |
return DateTime.Now; |
|
121 |
} |
|
122 |
} |
|
123 |
} |
|
124 |
} |
trunk/src/UpDateCopy/UpDateCopy/FrmCopy.Designer.cs | ||
---|---|---|
1 |
namespace UpDateCopy |
|
2 |
{ |
|
3 |
partial class FrmCopy |
|
4 |
{ |
|
5 |
/// <summary> |
|
6 |
/// 必要なデザイナー変数です。 |
|
7 |
/// </summary> |
|
8 |
private System.ComponentModel.IContainer components = null; |
|
9 |
|
|
10 |
/// <summary> |
|
11 |
/// 使用中のリソースをすべてクリーンアップします。 |
|
12 |
/// </summary> |
|
13 |
/// <param name="disposing">マネージ リソースが破棄される場合 true、破棄されない場合は false です。</param> |
|
14 |
protected override void Dispose(bool disposing) |
|
15 |
{ |
|
16 |
if (disposing && (components != null)) |
|
17 |
{ |
|
18 |
components.Dispose(); |
|
19 |
} |
|
20 |
base.Dispose(disposing); |
|
21 |
} |
|
22 |
|
|
23 |
#region Windows フォーム デザイナーで生成されたコード |
|
24 |
|
|
25 |
/// <summary> |
|
26 |
/// デザイナー サポートに必要なメソッドです。このメソッドの内容を |
|
27 |
/// コード エディターで変更しないでください。 |
|
28 |
/// </summary> |
|
29 |
private void InitializeComponent() |
|
30 |
{ |
|
31 |
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmCopy)); |
|
32 |
this.progressBar = new System.Windows.Forms.ProgressBar(); |
|
33 |
this.lblMessage = new System.Windows.Forms.Label(); |
|
34 |
this.SuspendLayout(); |
|
35 |
// |
|
36 |
// progressBar |
|
37 |
// |
|
38 |
this.progressBar.Location = new System.Drawing.Point(12, 209); |
|
39 |
this.progressBar.Name = "progressBar"; |
|
40 |
this.progressBar.Size = new System.Drawing.Size(610, 54); |
|
41 |
this.progressBar.TabIndex = 0; |
|
42 |
// |
|
43 |
// lblMessage |
|
44 |
// |
|
45 |
this.lblMessage.BackColor = System.Drawing.Color.White; |
|
46 |
this.lblMessage.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; |
|
47 |
this.lblMessage.Font = new System.Drawing.Font("MS 明朝", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128))); |
|
48 |
this.lblMessage.Location = new System.Drawing.Point(12, 27); |
|
49 |
this.lblMessage.Name = "lblMessage"; |
|
50 |
this.lblMessage.Size = new System.Drawing.Size(610, 169); |
|
51 |
this.lblMessage.TabIndex = 1; |
|
52 |
this.lblMessage.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; |
|
53 |
// |
|
54 |
// FrmCopy |
|
55 |
// |
|
56 |
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); |
|
57 |
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; |
|
58 |
this.ClientSize = new System.Drawing.Size(634, 275); |
|
59 |
this.Controls.Add(this.lblMessage); |
|
60 |
this.Controls.Add(this.progressBar); |
|
61 |
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); |
|
62 |
this.MaximizeBox = false; |
|
63 |
this.MinimizeBox = false; |
|
64 |
this.Name = "FrmCopy"; |
|
65 |
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; |
|
66 |
this.Text = "プログラム更新"; |
|
67 |
this.Load += new System.EventHandler(this.FrmCopy_Load); |
|
68 |
this.Shown += new System.EventHandler(this.FrmCopy_Shown); |
|
69 |
this.ResumeLayout(false); |
|
70 |
|
|
71 |
} |
|
72 |
|
|
73 |
#endregion |
|
74 |
|
|
75 |
private System.Windows.Forms.ProgressBar progressBar; |
|
76 |
private System.Windows.Forms.Label lblMessage; |
|
77 |
} |
|
78 |
} |
|
79 |
|
trunk/src/UpDateCopy/UpDateCopy/FrmCopy.cs | ||
---|---|---|
1 |
using System; |
|
2 |
using System.Collections; |
|
3 |
using System.Collections.Generic; |
|
4 |
using System.ComponentModel; |
|
5 |
using System.Data; |
|
6 |
using System.Diagnostics; |
|
7 |
using System.Drawing; |
|
8 |
using System.IO; |
|
9 |
using System.Linq; |
|
10 |
using System.Security.Cryptography; |
|
11 |
using System.Text; |
|
12 |
using System.Threading.Tasks; |
|
13 |
using System.Windows.Forms; |
|
14 |
|
|
15 |
namespace UpDateCopy |
|
16 |
{ |
|
17 |
public partial class FrmCopy : Form |
|
18 |
{ |
|
19 |
|
|
20 |
// コピー一覧リスト |
|
21 |
private static List<string> m_CopyList = new List<string>(); |
|
22 |
|
|
23 |
#region コンストラクタ |
|
24 |
public FrmCopy() |
|
25 |
{ |
|
26 |
InitializeComponent(); |
|
27 |
} |
|
28 |
#endregion |
|
29 |
|
|
30 |
/// <summary> |
|
31 |
/// 画面ロード |
|
32 |
/// </summary> |
|
33 |
/// <param name="sender"></param> |
|
34 |
/// <param name="e"></param> |
|
35 |
private void FrmCopy_Load(object sender, EventArgs e) |
|
36 |
{ |
|
37 |
} |
|
38 |
|
|
39 |
/// <summary> |
|
40 |
/// 工程管理の終了を待ってコピーする |
|
41 |
/// </summary> |
|
42 |
/// <param name="sender"></param> |
|
43 |
/// <param name="e"></param> |
|
44 |
private void FrmCopy_Shown(object sender, EventArgs e) |
|
45 |
{ |
|
46 |
// コマンドライン引数を取る |
|
47 |
string[] cmds = Environment.GetCommandLineArgs(); |
|
48 |
|
|
49 |
lblMessage.Text = ClsCommon.s_TargetProcess + "を更新しています。\nそのまましばらくお待ちください。"; |
|
50 |
lblMessage.Refresh(); |
|
51 |
|
|
52 |
// メインプログラムの終了を待つ |
|
53 |
while (true) |
|
54 |
{ |
|
55 |
bool Aliveflg = false; |
|
56 |
int cnt = 0; |
|
57 |
Process[] processList = Process.GetProcesses(); |
|
58 |
foreach (Process p in processList) |
|
59 |
{ |
|
60 |
if (p.ProcessName == ClsCommon.s_TargetProcess) |
|
61 |
{ |
|
62 |
if (p.Responding) |
|
63 |
{ |
|
64 |
Aliveflg = true; |
|
65 |
Console.WriteLine("OK"); |
|
66 |
break; |
|
67 |
} |
|
68 |
else |
|
69 |
{ |
|
70 |
break; |
|
71 |
} |
|
72 |
} |
|
73 |
Debug.WriteLine(++cnt + ":" + p.ProcessName); |
|
74 |
} |
|
75 |
if (!Aliveflg) break; |
|
76 |
System.Threading.Thread.Sleep(1000); |
|
77 |
} |
|
78 |
|
|
79 |
System.Threading.Thread.Sleep(5000); |
|
80 |
|
|
81 |
// ファイルコピー |
|
82 |
CopyFileProcess(); |
|
83 |
|
|
84 |
this.Close(); |
|
85 |
Application.Exit(); |
|
86 |
|
|
87 |
// ターゲットを起動する |
|
88 |
string ExecProc = System.Environment.CurrentDirectory + "\\" + ClsCommon.s_TargetProcess + ".exe"; |
|
89 |
//logger.ErrorFormat("{0}:起動プログラム:{1}", this.Name, ExecProc); |
|
90 |
Process exec = Process.Start(ExecProc); |
|
91 |
|
|
92 |
} |
|
93 |
|
|
94 |
/// <summary> |
|
95 |
/// ファイルコピーメイン |
|
96 |
/// </summary> |
|
97 |
/// <param name="dir"></param> |
|
98 |
private void CopyFileProcess() |
|
99 |
{ |
|
100 |
try |
|
101 |
{ |
|
102 |
// コピー対象を検索する |
|
103 |
CreateCopyList(); |
|
104 |
// コピー対象が無ければ処理終了 |
|
105 |
if (m_CopyList.Count == 0) return; |
|
106 |
|
|
107 |
lblMessage.Text = ClsCommon.s_TargetProcess + "を更新しています。\nそのまましばらくお待ちください。"; |
|
108 |
lblMessage.Refresh(); |
|
109 |
|
|
110 |
// プログレスバー設定 |
|
111 |
progressBar.Minimum = 0; |
|
112 |
progressBar.Value = 0; |
|
113 |
// プログレスバーMAX設定 |
|
114 |
progressBar.Maximum = m_CopyList.Count; |
|
115 |
|
|
116 |
// コピー先ファイル名 |
|
117 |
string destinationPath = System.Environment.CurrentDirectory + @"\" ; |
|
118 |
|
|
119 |
// ファイルコピー |
|
120 |
for (int i = 0; i < m_CopyList.Count; i++) |
|
121 |
{ |
|
122 |
// ファイル名を取得する |
|
123 |
int spoint = m_CopyList[i].LastIndexOf("\\") + 1; |
|
124 |
string Procename = m_CopyList[i].Substring(spoint); |
|
125 |
|
|
126 |
// コピー先ファイル名 |
|
127 |
string destinationFile = @destinationPath + Procename; |
|
128 |
|
|
129 |
// ファイルコピー |
|
130 |
File.Copy(@m_CopyList[i], @destinationFile, true); |
|
131 |
ClsCommon.ErrorLogWrite(string.Format("{0}::{1}", @m_CopyList[i], @destinationFile)); |
|
132 |
// プログレスバー加算 |
|
133 |
progressBar.Value++; |
|
134 |
progressBar.Refresh(); |
|
135 |
} |
|
136 |
// プログレスバー加算 |
|
137 |
progressBar.Value = progressBar.Maximum; |
|
138 |
progressBar.Refresh(); |
|
139 |
} |
|
140 |
catch (Exception ex) |
|
141 |
{ |
|
142 |
ClsCommon.ErrorLogWrite(ex.Message.ToString()); |
|
143 |
} |
|
144 |
} |
|
145 |
/// <summary> |
|
146 |
/// コピーファイル一覧作成 |
|
147 |
/// </summary> |
|
148 |
/// <param name="wrtString"></param> |
|
149 |
/// <returns></returns> |
|
150 |
private void CreateCopyList() |
|
151 |
{ |
|
152 |
|
|
153 |
try |
|
154 |
{ |
|
155 |
lblMessage.Text = ClsCommon.s_TargetProcess + "の更新を調査しています。\nそのまましばらくお待ちください。"; |
|
156 |
lblMessage.Refresh(); |
|
157 |
|
|
158 |
// 自プロセス名を作成する |
|
159 |
string myProcess = Process.GetCurrentProcess().ProcessName + ".exe"; |
|
160 |
|
|
161 |
// コピー元ファイル名を取得する |
|
162 |
string[] files = Directory.GetFiles(@ClsCommon.s_UPDATE_FILE_PATH); |
|
163 |
foreach (string sourceFile in files) |
|
164 |
{ |
|
165 |
// ファイル名を取得する |
|
166 |
int spoint = sourceFile.LastIndexOf("\\") + 1; |
|
167 |
string ProgramName = sourceFile.Substring(spoint); |
|
168 |
|
|
169 |
// 自分は処理しない |
|
170 |
if (myProcess == ProgramName) continue; |
|
171 |
|
|
172 |
// コピー先ファイル名 |
|
173 |
string destinationFile = System.Environment.CurrentDirectory + "\\" + ProgramName; |
|
174 |
|
|
175 |
// ----- コピー先にファイルファイルがない |
|
176 |
if (!File.Exists(@destinationFile)) |
|
177 |
{ |
|
178 |
m_CopyList.Add(@sourceFile); |
|
179 |
continue; |
|
180 |
} |
|
181 |
|
|
182 |
// ハッシュ値を取得する |
|
183 |
// ----- コピー元ファイル |
|
184 |
string srcHash = ClsCommon.GetFileHashData(@sourceFile); |
|
185 |
// ----- コピー先ファイル |
|
186 |
string destHash = ClsCommon.GetFileHashData(@destinationFile); |
|
187 |
|
|
188 |
// ファイルが違う |
|
189 |
if (srcHash != destHash) |
|
190 |
{ |
|
191 |
// 更新時間を確認する |
|
192 |
// ----- コピー元ファイル |
|
193 |
DateTime srcTimeStamp = ClsCommon.GetFileTimeStamp(@sourceFile, 'U'); |
|
194 |
// ----- コピー先ファイル |
|
195 |
DateTime destTimeStamp = ClsCommon.GetFileTimeStamp(@destinationFile, 'U'); |
|
196 |
// コピー元ファイルが新しくない |
|
197 |
if (srcTimeStamp <= destTimeStamp) continue; |
|
198 |
|
|
199 |
m_CopyList.Add(@sourceFile); |
|
200 |
} |
|
201 |
} |
|
202 |
} |
|
203 |
catch (Exception ex) |
|
204 |
{ |
|
205 |
ClsCommon.ErrorLogWrite(ex.Message.ToString()); |
|
206 |
} |
|
207 |
} |
|
208 |
|
|
209 |
} |
|
210 |
} |
trunk/src/UpDateCopy/UpDateCopy/FrmCopy.resx | ||
---|---|---|
1 |
<?xml version="1.0" encoding="utf-8"?> |
|
2 |
<root> |
|
3 |
<!-- |
|
4 |
Microsoft ResX Schema |
|
5 |
|
|
6 |
Version 2.0 |
|
7 |
|
|
8 |
The primary goals of this format is to allow a simple XML format |
|
9 |
that is mostly human readable. The generation and parsing of the |
|
10 |
various data types are done through the TypeConverter classes |
|
11 |
associated with the data types. |
|
12 |
|
|
13 |
Example: |
|
14 |
|
|
15 |
... ado.net/XML headers & schema ... |
|
16 |
<resheader name="resmimetype">text/microsoft-resx</resheader> |
|
17 |
<resheader name="version">2.0</resheader> |
|
18 |
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> |
|
19 |
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> |
|
20 |
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> |
|
21 |
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> |
|
22 |
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> |
|
23 |
<value>[base64 mime encoded serialized .NET Framework object]</value> |
|
24 |
</data> |
|
25 |
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> |
|
26 |
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> |
|
27 |
<comment>This is a comment</comment> |
|
28 |
</data> |
|
29 |
|
|
30 |
There are any number of "resheader" rows that contain simple |
|
31 |
name/value pairs. |
|
32 |
|
|
33 |
Each data row contains a name, and value. The row also contains a |
|
34 |
type or mimetype. Type corresponds to a .NET class that support |
|
35 |
text/value conversion through the TypeConverter architecture. |
|
36 |
Classes that don't support this are serialized and stored with the |
|
37 |
mimetype set. |
|
38 |
|
|
39 |
The mimetype is used for serialized objects, and tells the |
|
40 |
ResXResourceReader how to depersist the object. This is currently not |
|
41 |
extensible. For a given mimetype the value must be set accordingly: |
|
42 |
|
|
43 |
Note - application/x-microsoft.net.object.binary.base64 is the format |
|
44 |
that the ResXResourceWriter will generate, however the reader can |
|
45 |
read any of the formats listed below. |
|
46 |
|
|
47 |
mimetype: application/x-microsoft.net.object.binary.base64 |
|
48 |
value : The object must be serialized with |
|
49 |
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter |
|
50 |
: and then encoded with base64 encoding. |
|
51 |
|
|
52 |
mimetype: application/x-microsoft.net.object.soap.base64 |
|
53 |
value : The object must be serialized with |
|
54 |
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter |
|
55 |
: and then encoded with base64 encoding. |
|
56 |
|
|
57 |
mimetype: application/x-microsoft.net.object.bytearray.base64 |
|
58 |
value : The object must be serialized into a byte array |
|
59 |
: using a System.ComponentModel.TypeConverter |
|
60 |
: and then encoded with base64 encoding. |
|
61 |
--> |
|
62 |
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> |
|
63 |
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> |
|
64 |
<xsd:element name="root" msdata:IsDataSet="true"> |
|
65 |
<xsd:complexType> |
|
66 |
<xsd:choice maxOccurs="unbounded"> |
|
67 |
<xsd:element name="metadata"> |
|
68 |
<xsd:complexType> |
|
69 |
<xsd:sequence> |
|
70 |
<xsd:element name="value" type="xsd:string" minOccurs="0" /> |
|
71 |
</xsd:sequence> |
|
72 |
<xsd:attribute name="name" use="required" type="xsd:string" /> |
|
73 |
<xsd:attribute name="type" type="xsd:string" /> |
|
74 |
<xsd:attribute name="mimetype" type="xsd:string" /> |
|
75 |
<xsd:attribute ref="xml:space" /> |
|
76 |
</xsd:complexType> |
|
77 |
</xsd:element> |
|
78 |
<xsd:element name="assembly"> |
|
79 |
<xsd:complexType> |
|
80 |
<xsd:attribute name="alias" type="xsd:string" /> |
|
81 |
<xsd:attribute name="name" type="xsd:string" /> |
|
82 |
</xsd:complexType> |
|
83 |
</xsd:element> |
|
84 |
<xsd:element name="data"> |
|
85 |
<xsd:complexType> |
|
86 |
<xsd:sequence> |
|
87 |
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
|
88 |
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> |
|
89 |
</xsd:sequence> |
|
90 |
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> |
|
91 |
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> |
|
92 |
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> |
|
93 |
<xsd:attribute ref="xml:space" /> |
|
94 |
</xsd:complexType> |
|
95 |
</xsd:element> |
|
96 |
<xsd:element name="resheader"> |
|
97 |
<xsd:complexType> |
|
98 |
<xsd:sequence> |
|
99 |
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
|
100 |
</xsd:sequence> |
|
101 |
<xsd:attribute name="name" type="xsd:string" use="required" /> |
|
102 |
</xsd:complexType> |
|
103 |
</xsd:element> |
|
104 |
</xsd:choice> |
|
105 |
</xsd:complexType> |
|
106 |
</xsd:element> |
|
107 |
</xsd:schema> |
|
108 |
<resheader name="resmimetype"> |
|
109 |
<value>text/microsoft-resx</value> |
|
110 |
</resheader> |
|
111 |
<resheader name="version"> |
|
112 |
<value>2.0</value> |
|
113 |
</resheader> |
|
114 |
<resheader name="reader"> |
|
115 |
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
|
116 |
</resheader> |
|
117 |
<resheader name="writer"> |
|
118 |
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
|
119 |
</resheader> |
|
120 |
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> |
|
121 |
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> |
|
122 |
<value> |
|
123 |
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA |
|
124 |
AAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAQH/AAQC/wAAAP8AAAD/ARcL/wVLJP8Igz//C65T/w3I |
|
125 |
YP8N0mX/DdJl/w3IYP8LrlP/CIM//wVLJP8BFwv/AAAA/wAAAP8ABAL/AAEB/wAAAP8AAAD/AAAA/wAA |
|
126 |
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAIB/wABAP8AAAD/AiYS/wh/Pf8NxF7/DuFs/w/m |
|
127 |
bv8O4Wz/Dt1q/w7caf8O3Gn/Dt1q/w7hbP8P5m7/DuFs/w3EXv8Ifz3/AiYS/wAAAP8AAQD/AAIB/wAA |
|
128 |
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wADAf8AAAD/AQoF/wdvNf8O02X/D+Zu/w7b |
|
129 |
af8O1Gb/DtNl/w7UZv8O1mb/DtZn/w7WZ/8O1mb/DtRm/w7TZf8O1Gb/Dttp/w/mbv8O02X/B281/wEK |
|
130 |
Bf8AAAD/AAMB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAwH/AAAA/wIgD/8KqFH/DuRt/w7V |
|
131 |
Zv8NzWP/DdFk/w3UZv8N1Gb/DdRm/w3TZf8N02X/DdNl/w3TZf8N1Gb/DdRm/w3UZv8N0WT/Dc1j/w7V |
|
132 |
Zv8O5G3/CqhR/wIgD/8AAAD/AAMB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAMB/wAAAP8DKRT/DMBc/w7e |
|
133 |
av8NymH/Dc9j/w3RZP8N0GT/DdBk/w3QZP8N0GT/DdBk/w3QZP8N0GT/DdBk/w3QZP8N0GT/DdBk/w3Q |
|
134 |
ZP8N0WT/Dc9j/w3KYf8O3mr/DMBc/wMpFP8AAAD/AAMB/wAAAP8AAAD/AAAA/wACAf8AAAD/AiAQ/wy+ |
|
135 |
W/8O12f/Dcdg/w3NY/8NzWL/Dc1i/w3NYv8NzWL/Dc1i/w3NYv8NzWL/Dc1i/w3NYv8NzWL/Dc1i/w3N |
|
136 |
Yv8NzWL/Dc1i/w3NYv8NzWL/Dc1j/w3HYP8O12f/DL5b/wIgEP8AAAD/AAIB/wAAAP8AAQH/AAIB/wEJ |
|
137 |
BP8Ko07/DtZn/w3EXv8Ny2H/Dclh/w3KYf8NymH/Dcph/w3KYf8NymH/Dcph/w3KYf8NymH/Dcph/w3K |
|
138 |
Yf8NymH/Dcph/w3KYf8NymH/Dcph/w3KYf8NyWH/Dcth/w3EXv8O1mf/CqNO/wEJBP8AAgH/AAEB/wAD |
|
139 |
Av8AAAD/B2sz/w7WZ/8MwV3/Dcdg/w3GX/8Nxl//DcZf/w3GX/8Nxl//DcZf/w3GX/8Nxl//DcZf/w3G |
|
140 |
X/8Nxl//DcZf/w3GX/8Nxl//DcZf/w3GX/8Nxl//DcZf/w3GX/8Nxl//Dcdg/w3BXf8O1mf/B2sz/wAA |
|
141 |
AP8AAwL/AAAA/wIlEv8Mwl3/DMNe/wzCXf8NxF7/DcNf/wzDXf8Mw17/DMNe/wzDXv8Mw17/DMNe/w3D |
|
142 |
Xv8Mw17/DMNe/wzDXv8Mw17/DMNe/wzDXv8Mw17/DMNe/wzDXv8Mw17/DMNe/wzDXv8Mw17/DMJd/wzD |
|
143 |
Xv8Mwl3/AiUS/wAAAP8AAAD/B3U4/w3NY/8Lu1n/DsFe/wq/Wv8Jv1r/DsBd/wzAXP8NwF3/DMBc/wzA |
|
144 |
XP8MwFz/DcBd/w7AXv8NwF3/DMBc/w3AXf8MwFz/DcBd/wzAXP8MwFz/DcBd/wzAXP8MwFz/DcBd/w3A |
|
145 |
Xf8NwV3/DLta/w3NY/8HdTj/AAAA/wEXC/8LrVP/DL9c/w27W/8Hu1f/E75f/xS+X/8Hu1f/C7xZ/wm7 |
|
146 |
WP8MvVv/DL1b/wq8Wf8GulX/ArlT/wi8Wf8LvFn/CbtY/wu9XP8Ju1j/CrxZ/wu8Wv8Iu1f/DL1b/wq8 |
|
147 |
Wf8GulX/BbpU/wa6Vv8Mu1r/DL9c/wutU/8BFwv/BEUh/wzBXP8Ot1n/CLhW/xi8YP+x6cr/uuzR/xK5 |
|
148 |
Wf9SzYf/Wc+N/wO2Uv8Ft1T/UM2H/6znxf+S4LX/Frpb/1vPjP9Wz4z/ALJH/2TTlv9NyoH/Gbte/3/b |
|
149 |
qf8FtU//RMl+/6blwv+m5cH/hNuq/wm4Vv8Mt1j/DcFd/wRFIf8HdDj/DL9c/w+0Wf8AsUv/aNKX/7fo |
|
150 |
y/+36cz/Yc+Q/2POj/931qL/ArJP/wKzUP9t05r/x+7Y/9Ly4f9s0ZX/V8qG/4faq/8AqDn/lN+2/0vH |
|
151 |
fv8iumH/p+XE/wOwSv9azYz/zfDd/7jqz/+W37b/CLRU/wuzVv8Mv1z/B3Q4/wmVSP8Lt1j/DbJX/wGu |
|
152 |
Sv+P3LL/RMJ4/zzAc/+E2Kn/X8uM/2fPlv8Aq0X/Aa5M/3TTnv9WyYj/Ob5u/53gu/8yvW3/t+nO/5zg |
|
153 |
uv+26M3/ILhh/yW5ZP+c4Lv/AaxH/2DNkP93057/C69N/xG1W/8KslX/C7FV/wu3WP8JlUj/CqdQ/wux |
|
154 |
Vf8Mr1X/AqtL/5Dasf83vXH/MLtt/4TWqP9eyYv/iNeq/yu4Z/8Dqkn/ddGd/13Kjf8Lq0z/m9+6/zG5 |
|
155 |
av+y5sn/wuvU/7DlyP8Lr1P/J7hm/57gu/8BqEX/Y8yR/2/Pl/8Aozr/Bq5R/wuwVf8Lr1T/C7FV/wqn |
|
156 |
UP8Lq1L/C6xT/wytVP8CqEn/kdmx/zm6cf8xuGz/iNar/1HCgP/c8+f/3vXq/0a+d/9sy5P/ZMqS/wWm |
|
157 |
R/+b3bn/Obdp/4nWqv9EvHT/k9qy/wKoSv8otmf/nd66/wOlRf9bx4r/ot+8/2jLk/9Bvnn/BKlN/w2t |
|
158 |
VP8LrFP/C6tS/wuoUf8LqVH/DKlS/wKkSP+R2LD/OLhv/zG1av+G1Kf/XcSI/5PYsP+H0qX/hdSo/2nJ |
|
159 |
kv9jyI//AqJE/57du/8ssGD/fdCg/2zKlP+A0qT/AKJD/yq0Z/+c3Ln/BKNF/1PBgv/U8OH/5Pbs/3rQ |
|
160 |
oP8Ao0X/DqpU/wqpUf8LqFH/CqBN/wqmUP8LplH/AqFG/5HWr/84tW7/MbNp/4PRpf9lxY3/YcWM/yCo |
|
161 |
U/+N1a3/dMuZ/2HFjf8JoUb/od29/xqoVf9qyJL/nNu4/2jHkf8BnkD/LrNp/53buf8En0P/X8SL/4jS |
|
162 |
p/8sr2L/JK9i/wakTf8LplD/CqdQ/wqgTf8JjEP/CqZQ/wuiT/8CnUT/kdWu/ziybf8xsGj/hNCl/2XD |
|
163 |
jf9hwor/IqVT/43UrP90yZj/ULt+/xihTP+n3sH/BZ1D/1W9gv/M7Nv/Trt9/wCYO/8iqVz/mdi2/wCU |
|
164 |
M/9iw4z/bMaS/wCRLf8An0f/C6NP/wqhTf8KplD/CYxD/wdsNP8KplD/C51N/wKaQ/+R067/N69q/y+s |
|
165 |
Zf+EzqT/WbyC/57Yt/+X1K//ktSv/23FlP+d2Lb/ndi1/53Zt/8CmUL/R7Z3/9Xv4f8rqWD/Jadc/4jQ |
|
166 |
p/+04cf/Y8CJ/2bCjv+k27v/c8eX/1W8g/8Dm0b/C51M/wqnUP8HbDT/BEIg/wqjTv8Lmkv/AZZA/5HS |
|
167 |
rf89r27/Oa5s/5TUsP9jv4v/4vTq/9/z6P9lwY7/eMmc/+j27v/W7+H/Y8CM/yqpZP9SuYD/y+rZ/y2p |
|
168 |
Y/9fvYj/3vLn/8np1/+85M7/ZsCM/87r2//g8uj/q93B/xKfUP8JmUn/C6RP/wRCIP8BGAz/CZJG/wiZ |
|
169 |
Sf8LmEr/TrV8/0izeP9Hsnf/VbiB/021fP9cu4b/U7eA/z2ucP9OtXz/W7uG/061fP8+rnD/QrBz/0Sx |
|
170 |
df9YuYT/RLF1/0u0ev9YuYT/V7mD/0izeP9Ar3H/V7mD/1e5g/9VuIH/N6tr/wiZSf8Jkkf/ARgM/wAA |
|
171 |
AP8HZjH/B55L/xGVTP9IsXf/TLJ5/0uxef9IsHb/SbF4/0Wvdf9HsHb/TbJ7/0mxeP9Fr3X/SLB3/02y |
|
172 |
e/9Msnr/S7J5/0awdv9Msnn/SrF4/0avdf9GsHX/SbF3/0yyef9GsHb/Ra90/0yyev84pmn/Bp1K/wdm |
|
173 |
Mv8AAAD/AAAA/wImEv8Jl0n/B49E/0uveP9atoP/VrSA/1i1gf9XtIH/WLWC/1i1gv9WtID/V7SB/1i1 |
|
174 |
gv9YtYH/VrSA/1a0gP9WtIH/WLWC/1a0gP9XtIH/WLWC/1i1gf9XtYH/VrSA/1i1gv9WtID/XriG/yOc |
|
175 |
Wf8ElUX/BCYT/wAAAP8AAgH/AAAA/whdLv8ClkT/L5xg/2i7jf9dtYT/YbeH/2C2h/9gt4f/YLeH/2G3 |
|
176 |
h/9gt4f/YLeH/2G3h/9ht4f/YbeH/2G3h/9gt4f/YLaH/2C2h/9gtof/YLaH/2C2h/9ht4f/XrWE/2a6 |
|
177 |
i/9Nqnb/BphH/wZcLf8AAAD/AAIB/wABAf8AAQH/Ag8I/wd/Pf8IkUX/Wq+A/2+8kv9nuIv/a7qO/2q5 |
|
178 |
jv9quY7/armO/2q5jv9quY7/armO/2q5jv9quY7/armO/2q5jf9quY3/armN/2q5jf9quY3/a7mO/2e4 |
|
179 |
i/9tu4//Z7WK/xSWTv8EfTr/Ag8I/wABAf8AAQH/AAAA/wABAf8AAAD/BCIR/wSJQP8Xkk7/cbiR/3m/ |
|
180 |
mf9wupL/dLyU/3W8lf90vJX/dLyV/3S8lf90vJX/dLyV/3S8lP90vJT/dLyU/3S8lP90vJX/dLyV/3O8 |
|
181 |
lP9wupL/eb+Z/3O5k/8fllT/Aog+/wQiEv8AAAD/AAEB/wAAAP8AAAD/AAAA/wACAf8AAAD/BSwW/wKG |
|
182 |
Pf8dk1H/dbeT/4rGpf99v5v/e72Z/32+mv9+v5z/f8Cc/3/AnP9/wJz/f8Cc/3/AnP9/wJz/fr+b/3y+ |
|
183 |
mv97vZn/f8Cc/4rGpf9xtY//HJNR/wKGPf8FLBf/AAAA/wACAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAD |
|
184 |
Af8AAAD/BSQS/wJ2Nf8Rjkj/XKl+/43Dpf+TyKv/jMWl/4fCof+FwaD/hcGf/4XBn/+FwZ//hcGf/4XB |
|
185 |
oP+HwqH/jcWm/5PJq/+JwaL/U6R2/w2MRf8Cdjb/BSQT/wAAAP8AAwH/AAAA/wAAAP8AAAD/AAAA/wAA |
|
186 |
AP8AAAD/AAAA/wACAf8AAAD/AxAJ/wNXKP8Cgjr/JpRW/16qf/+FvZ7/mMit/53Msv+ezbP/ns2z/57N |
|
187 |
s/+ezbP/ncyy/5fHrf+Cu5v/VqZ5/x6PUP8BgTn/BFcp/wMQCf8AAAD/AAIB/wAAAP8AAAD/AAAA/wAA |
|
188 |
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wACAf8AAAD/AQAA/wUnFP8AWSf/AHYz/w+FQ/8qkFb/QZln/1Gg |
|
189 |
dP9ZpXv/WqV7/1Khdf9BmWf/KI9V/w2EQf8AdTP/AVop/wUnFf8BAAD/AAAA/wACAf8AAAD/AAAA/wAA |
|
190 |
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wABAf8AAgH/AAAA/wMBAv8FGw//Ajwc/wBY |
|
191 |
Jv8AbC7/AHYy/wB4M/8AeDP/AHYy/wBsLv8AWSf/Azwd/wUbD/8CAQH/AAAA/wACAf8AAQH/AAAA/wAA |
|
192 |
AP8AAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
|
193 |
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
|
194 |
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= |
|
195 |
</value> |
|
196 |
</data> |
|
197 |
</root> |
trunk/src/UpDateCopy/UpDateCopy/Program.cs | ||
---|---|---|
1 |
using System; |
|
2 |
using System.Collections.Generic; |
|
3 |
using System.Diagnostics; |
|
4 |
using System.IO; |
|
5 |
using System.Linq; |
|
6 |
using System.Threading.Tasks; |
|
7 |
using System.Windows.Forms; |
|
8 |
|
|
9 |
namespace UpDateCopy |
|
10 |
{ |
|
11 |
static class Program |
|
12 |
{ |
|
13 |
/// <summary> |
|
14 |
/// アプリケーションのメイン エントリ ポイントです。 |
|
15 |
/// </summary> |
|
16 |
[STAThread] |
|
17 |
static void Main() |
|
18 |
{ |
|
19 |
//すでに起動していると判断する |
|
20 |
if (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1) return; |
|
21 |
|
|
22 |
Application.EnableVisualStyles(); |
|
23 |
Application.SetCompatibleTextRenderingDefault(false); |
|
24 |
Application.Run(new FrmCopy()); |
|
25 |
} |
|
26 |
} |
|
27 |
} |
trunk/src/UpDateCopy/UpDateCopy/Properties/AssemblyInfo.cs | ||
---|---|---|
1 |
using System.Reflection; |
|
2 |
using System.Runtime.CompilerServices; |
|
3 |
using System.Runtime.InteropServices; |
|
4 |
|
|
5 |
// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。 |
|
6 |
// アセンブリに関連付けられている情報を変更するには、 |
|
7 |
// これらの属性値を変更してください。 |
|
8 |
[assembly: AssemblyTitle("UpDateCopy")] |
|
9 |
[assembly: AssemblyDescription("")] |
|
10 |
[assembly: AssemblyConfiguration("")] |
|
11 |
[assembly: AssemblyCompany("")] |
|
12 |
[assembly: AssemblyProduct("UpDateCopy")] |
|
13 |
[assembly: AssemblyCopyright("Copyright © 2015")] |
|
14 |
[assembly: AssemblyTrademark("")] |
|
15 |
[assembly: AssemblyCulture("")] |
|
16 |
|
|
17 |
// ComVisible を false に設定すると、その型はこのアセンブリ内で COM コンポーネントから |
|
18 |
// 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、 |
|
19 |
// その型の ComVisible 属性を true に設定してください。 |
|
20 |
[assembly: ComVisible(false)] |
|
21 |
|
|
22 |
// 次の GUID は、このプロジェクトが COM に公開される場合の、typelib の ID です |
|
23 |
[assembly: Guid("d1a52b1e-09ee-4ffd-bcca-9c613ddae486")] |
|
24 |
|
|
25 |
// アセンブリのバージョン情報は、以下の 4 つの値で構成されています: |
|
26 |
// |
|
27 |
// Major Version |
|
28 |
// Minor Version |
|
29 |
// Build Number |
|
30 |
// Revision |
|
31 |
// |
|
32 |
// すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を |
|
33 |
// 既定値にすることができます: |
|
34 |
// [assembly: AssemblyVersion("1.0.*")] |
|
35 |
[assembly: AssemblyVersion("1.0.0.0")] |
|
36 |
[assembly: AssemblyFileVersion("1.0.0.0")] |
trunk/src/UpDateCopy/UpDateCopy/Properties/Resources.Designer.cs | ||
---|---|---|
1 |
//------------------------------------------------------------------------------ |
|
2 |
// <auto-generated> |
|
3 |
// このコードはツールによって生成されました。 |
|
4 |
// ランタイム バージョン:4.0.30319.42000 |
|
5 |
// |
|
6 |
// このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 |
|
7 |
// コードが再生成されるときに損失したりします |
|
8 |
// </auto-generated> |
|
9 |
//------------------------------------------------------------------------------ |
|
10 |
|
|
11 |
namespace UpDateCopy.Properties |
|
12 |
{ |
|
13 |
|
|
14 |
|
|
15 |
/// <summary> |
|
16 |
/// ローカライズされた文字列などを検索するための、厳密に型指定されたリソース クラスです。 |
|
17 |
/// </summary> |
|
18 |
// このクラスは StronglyTypedResourceBuilder クラスが ResGen |
|
19 |
// または Visual Studio のようなツールを使用して自動生成されました。 |
|
20 |
// メンバーを追加または削除するには、.ResX ファイルを編集して、/str オプションと共に |
|
21 |
// ResGen を実行し直すか、または VS プロジェクトをリビルドします。 |
|
22 |
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] |
|
23 |
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] |
|
24 |
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] |
|
25 |
internal class Resources |
|
26 |
{ |
|
27 |
|
|
28 |
private static global::System.Resources.ResourceManager resourceMan; |
|
29 |
|
|
30 |
private static global::System.Globalization.CultureInfo resourceCulture; |
|
31 |
|
|
32 |
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] |
|
33 |
internal Resources() |
|
34 |
{ |
|
35 |
} |
|
36 |
|
|
37 |
/// <summary> |
|
38 |
/// このクラスに使用される、キャッシュされた ResourceManager のインスタンスを返します。 |
|
39 |
/// </summary> |
|
40 |
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] |
|
41 |
internal static global::System.Resources.ResourceManager ResourceManager |
|
42 |
{ |
|
43 |
get |
|
44 |
{ |
|
45 |
if ((resourceMan == null)) |
|
46 |
{ |
|
47 |
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UpDateCopy.Properties.Resources", typeof(Resources).Assembly); |
|
48 |
resourceMan = temp; |
|
49 |
} |
|
50 |
return resourceMan; |
|
51 |
} |
|
52 |
} |
|
53 |
|
|
54 |
/// <summary> |
|
55 |
/// 厳密に型指定されたこのリソース クラスを使用して、すべての検索リソースに対し、 |
|
56 |
/// 現在のスレッドの CurrentUICulture プロパティをオーバーライドします。 |
|
57 |
/// </summary> |
|
58 |
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] |
|
59 |
internal static global::System.Globalization.CultureInfo Culture |
|
60 |
{ |
|
61 |
get |
|
62 |
{ |
|
63 |
return resourceCulture; |
|
64 |
} |
|
65 |
set |
|
66 |
{ |
|
67 |
resourceCulture = value; |
|
68 |
} |
|
69 |
} |
|
70 |
} |
|
71 |
} |
trunk/src/UpDateCopy/UpDateCopy/Properties/Resources.resx | ||
---|---|---|
1 |
<?xml version="1.0" encoding="utf-8"?> |
|
2 |
<root> |
|
3 |
<!-- |
|
4 |
Microsoft ResX Schema |
|
5 |
|
|
6 |
Version 2.0 |
|
7 |
|
|
8 |
The primary goals of this format is to allow a simple XML format |
|
9 |
that is mostly human readable. The generation and parsing of the |
|
10 |
various data types are done through the TypeConverter classes |
|
11 |
associated with the data types. |
|
12 |
|
|
13 |
Example: |
|
14 |
|
|
15 |
... ado.net/XML headers & schema ... |
|
16 |
<resheader name="resmimetype">text/microsoft-resx</resheader> |
|
17 |
<resheader name="version">2.0</resheader> |
|
18 |
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> |
|
19 |
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> |
|
20 |
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> |
|
21 |
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> |
|
22 |
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> |
|
23 |
<value>[base64 mime encoded serialized .NET Framework object]</value> |
|
24 |
</data> |
|
25 |
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> |
|
26 |
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> |
|
27 |
<comment>This is a comment</comment> |
|
28 |
</data> |
|
29 |
|
|
30 |
There are any number of "resheader" rows that contain simple |
|
31 |
name/value pairs. |
|
32 |
|
|
33 |
Each data row contains a name, and value. The row also contains a |
|
34 |
type or mimetype. Type corresponds to a .NET class that support |
|
35 |
text/value conversion through the TypeConverter architecture. |
|
36 |
Classes that don't support this are serialized and stored with the |
|
37 |
mimetype set. |
|
38 |
|
|
39 |
The mimetype is used for serialized objects, and tells the |
|
40 |
ResXResourceReader how to depersist the object. This is currently not |
|
41 |
extensible. For a given mimetype the value must be set accordingly: |
|
42 |
|
|
43 |
Note - application/x-microsoft.net.object.binary.base64 is the format |
|
44 |
that the ResXResourceWriter will generate, however the reader can |
|
45 |
read any of the formats listed below. |
|
46 |
|
|
47 |
mimetype: application/x-microsoft.net.object.binary.base64 |
|
48 |
value : The object must be serialized with |
|
49 |
: System.Serialization.Formatters.Binary.BinaryFormatter |
|
50 |
: and then encoded with base64 encoding. |
|
51 |
|
|
52 |
mimetype: application/x-microsoft.net.object.soap.base64 |
|
53 |
value : The object must be serialized with |
|
54 |
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter |
|
55 |
: and then encoded with base64 encoding. |
|
56 |
|
|
57 |
mimetype: application/x-microsoft.net.object.bytearray.base64 |
|
58 |
value : The object must be serialized into a byte array |
|
59 |
: using a System.ComponentModel.TypeConverter |
|
60 |
: and then encoded with base64 encoding. |
|
61 |
--> |
|
62 |
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> |
|
63 |
<xsd:element name="root" msdata:IsDataSet="true"> |
|
64 |
<xsd:complexType> |
|
65 |
<xsd:choice maxOccurs="unbounded"> |
|
66 |
<xsd:element name="metadata"> |
|
67 |
<xsd:complexType> |
|
68 |
<xsd:sequence> |
|
69 |
<xsd:element name="value" type="xsd:string" minOccurs="0" /> |
|
70 |
</xsd:sequence> |
|
71 |
<xsd:attribute name="name" type="xsd:string" /> |
|
72 |
<xsd:attribute name="type" type="xsd:string" /> |
|
73 |
<xsd:attribute name="mimetype" type="xsd:string" /> |
|
74 |
</xsd:complexType> |
|
75 |
</xsd:element> |
|
76 |
<xsd:element name="assembly"> |
|
77 |
<xsd:complexType> |
|
78 |
<xsd:attribute name="alias" type="xsd:string" /> |
|
79 |
<xsd:attribute name="name" type="xsd:string" /> |
|
80 |
</xsd:complexType> |
|
81 |
</xsd:element> |
|
82 |
<xsd:element name="data"> |
|
83 |
<xsd:complexType> |
|
84 |
<xsd:sequence> |
|
85 |
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
|
86 |
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> |
|
87 |
</xsd:sequence> |
|
88 |
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> |
|
89 |
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> |
|
90 |
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> |
|
91 |
</xsd:complexType> |
|
92 |
</xsd:element> |
|
93 |
<xsd:element name="resheader"> |
|
94 |
<xsd:complexType> |
|
95 |
<xsd:sequence> |
|
96 |
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
|
97 |
</xsd:sequence> |
|
98 |
<xsd:attribute name="name" type="xsd:string" use="required" /> |
|
99 |
</xsd:complexType> |
|
100 |
</xsd:element> |
|
101 |
</xsd:choice> |
|
102 |
</xsd:complexType> |
|
103 |
</xsd:element> |
|
104 |
</xsd:schema> |
|
105 |
<resheader name="resmimetype"> |
|
106 |
<value>text/microsoft-resx</value> |
|
107 |
</resheader> |
|
108 |
<resheader name="version"> |
|
109 |
<value>2.0</value> |
|
110 |
</resheader> |
|
111 |
<resheader name="reader"> |
|
112 |
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
|
113 |
</resheader> |
|
114 |
<resheader name="writer"> |
|
115 |
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
|
116 |
</resheader> |
|
117 |
</root> |
trunk/src/UpDateCopy/UpDateCopy/Properties/Settings.Designer.cs | ||
---|---|---|
1 |
//------------------------------------------------------------------------------ |
|
2 |
// <auto-generated> |
|
3 |
// This code was generated by a tool. |
|
4 |
// Runtime Version:4.0.30319.42000 |
|
5 |
// |
|
6 |
// Changes to this file may cause incorrect behavior and will be lost if |
|
7 |
// the code is regenerated. |
|
8 |
// </auto-generated> |
|
9 |
//------------------------------------------------------------------------------ |
|
10 |
|
|
11 |
namespace UpDateCopy.Properties |
|
12 |
{ |
|
13 |
|
|
14 |
|
|
15 |
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] |
|
16 |
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] |
|
17 |
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase |
|
18 |
{ |
|
19 |
|
|
20 |
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); |
|
21 |
|
|
22 |
public static Settings Default |
|
23 |
{ |
|
24 |
get |
|
25 |
{ |
|
26 |
return defaultInstance; |
|
27 |
} |
|
28 |
} |
|
29 |
} |
|
30 |
} |
trunk/src/UpDateCopy/UpDateCopy/Properties/Settings.settings | ||
---|---|---|
1 |
<?xml version='1.0' encoding='utf-8'?> |
|
2 |
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> |
|
3 |
<Profiles> |
|
4 |
<Profile Name="(Default)" /> |
|
5 |
</Profiles> |
|
6 |
<Settings /> |
|
7 |
</SettingsFile> |
trunk/src/UpDateCopy/UpDateCopy/UpDateCopy.csproj | ||
---|---|---|
1 |
<?xml version="1.0" encoding="utf-8"?> |
|
2 |
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|
3 |
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> |
|
4 |
<PropertyGroup> |
|
5 |
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
|
6 |
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
|
7 |
<ProjectGuid>{3B7CCC3E-82E5-42CA-8EE1-7628D4B52820}</ProjectGuid> |
|
8 |
<OutputType>WinExe</OutputType> |
|
9 |
<AppDesignerFolder>Properties</AppDesignerFolder> |
|
10 |
<RootNamespace>UpDateCopy</RootNamespace> |
|
11 |
<AssemblyName>UpDateCopy</AssemblyName> |
|
12 |
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> |
|
13 |
<FileAlignment>512</FileAlignment> |
|
14 |
</PropertyGroup> |
|
15 |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
|
16 |
<PlatformTarget>AnyCPU</PlatformTarget> |
|
17 |
<DebugSymbols>true</DebugSymbols> |
|
18 |
<DebugType>full</DebugType> |
|
19 |
<Optimize>false</Optimize> |
|
20 |
<OutputPath>bin\Debug\</OutputPath> |
|
21 |
<DefineConstants>DEBUG;TRACE</DefineConstants> |
|
22 |
<ErrorReport>prompt</ErrorReport> |
|
23 |
<WarningLevel>4</WarningLevel> |
|
24 |
</PropertyGroup> |
|
25 |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
|
26 |
<PlatformTarget>AnyCPU</PlatformTarget> |
|
27 |
<DebugType>pdbonly</DebugType> |
|
28 |
<Optimize>true</Optimize> |
|
29 |
<OutputPath>bin\Release\</OutputPath> |
|
30 |
<DefineConstants>TRACE</DefineConstants> |
|
31 |
<ErrorReport>prompt</ErrorReport> |
|
32 |
<WarningLevel>4</WarningLevel> |
|
33 |
</PropertyGroup> |
|
34 |
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'"> |
|
35 |
<DebugSymbols>true</DebugSymbols> |
|
36 |
<OutputPath>bin\x86\Debug\</OutputPath> |
|
37 |
<DefineConstants>DEBUG;TRACE</DefineConstants> |
|
38 |
<DebugType>full</DebugType> |
|
39 |
<PlatformTarget>x86</PlatformTarget> |
|
40 |
<ErrorReport>prompt</ErrorReport> |
|
41 |
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> |
|
42 |
<Prefer32Bit>true</Prefer32Bit> |
|
43 |
</PropertyGroup> |
|
44 |
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'"> |
|
45 |
<OutputPath>bin\x86\Release\</OutputPath> |
|
46 |
<DefineConstants>TRACE</DefineConstants> |
|
47 |
<Optimize>true</Optimize> |
|
48 |
<DebugType>pdbonly</DebugType> |
|
49 |
<PlatformTarget>x86</PlatformTarget> |
|
50 |
<ErrorReport>prompt</ErrorReport> |
|
51 |
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> |
|
52 |
<Prefer32Bit>true</Prefer32Bit> |
|
53 |
</PropertyGroup> |
|
54 |
<PropertyGroup> |
|
55 |
<ApplicationIcon>updatIcon.ico</ApplicationIcon> |
|
56 |
</PropertyGroup> |
|
57 |
<ItemGroup> |
|
58 |
<Reference Include="System" /> |
|
59 |
<Reference Include="System.Core" /> |
|
60 |
<Reference Include="System.Xml.Linq" /> |
|
61 |
<Reference Include="System.Data.DataSetExtensions" /> |
|
62 |
<Reference Include="Microsoft.CSharp" /> |
|
63 |
<Reference Include="System.Data" /> |
|
64 |
<Reference Include="System.Deployment" /> |
|
65 |
<Reference Include="System.Drawing" /> |
|
66 |
<Reference Include="System.Windows.Forms" /> |
|
67 |
<Reference Include="System.Xml" /> |
|
68 |
</ItemGroup> |
|
69 |
<ItemGroup> |
|
70 |
<Compile Include="ClsCommon.cs" /> |
|
71 |
<Compile Include="FrmCopy.cs"> |
|
72 |
<SubType>Form</SubType> |
|
73 |
</Compile> |
|
74 |
<Compile Include="FrmCopy.Designer.cs"> |
|
75 |
<DependentUpon>FrmCopy.cs</DependentUpon> |
|
76 |
</Compile> |
|
77 |
<Compile Include="Program.cs" /> |
|
78 |
<Compile Include="Properties\AssemblyInfo.cs" /> |
|
79 |
<EmbeddedResource Include="FrmCopy.resx"> |
|
80 |
<DependentUpon>FrmCopy.cs</DependentUpon> |
|
81 |
</EmbeddedResource> |
|
82 |
<EmbeddedResource Include="Properties\Resources.resx"> |
|
83 |
<Generator>ResXFileCodeGenerator</Generator> |
|
84 |
<LastGenOutput>Resources.Designer.cs</LastGenOutput> |
|
85 |
<SubType>Designer</SubType> |
|
86 |
</EmbeddedResource> |
|
87 |
<Compile Include="Properties\Resources.Designer.cs"> |
|
88 |
<AutoGen>True</AutoGen> |
|
89 |
<DependentUpon>Resources.resx</DependentUpon> |
|
90 |
</Compile> |
|
91 |
<None Include="Properties\Settings.settings"> |
|
92 |
<Generator>SettingsSingleFileGenerator</Generator> |
|
93 |
<LastGenOutput>Settings.Designer.cs</LastGenOutput> |
|
94 |
</None> |
|
95 |
<Compile Include="Properties\Settings.Designer.cs"> |
|
96 |
<AutoGen>True</AutoGen> |
|
97 |
<DependentUpon>Settings.settings</DependentUpon> |
|
98 |
<DesignTimeSharedInput>True</DesignTimeSharedInput> |
|
99 |
</Compile> |
|
100 |
</ItemGroup> |
|
101 |
<ItemGroup> |
|
102 |
<None Include="App.config" /> |
|
103 |
</ItemGroup> |
|
104 |
<ItemGroup> |
|
105 |
<Content Include="updatIcon.ico" /> |
|
106 |
</ItemGroup> |
|
107 |
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> |
|
108 |
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. |
|
109 |
Other similar extension points exist, see Microsoft.Common.targets. |
|
110 |
<Target Name="BeforeBuild"> |
|
111 |
</Target> |
|
112 |
<Target Name="AfterBuild"> |
|
113 |
</Target> |
|
114 |
--> |
|
115 |
</Project> |
trunk/src/UpDateCopy/UpDateCopy/bin/x86/Debug/UpDateCopy.exe.config | ||
---|---|---|
1 |
<?xml version="1.0" encoding="utf-8" ?> |
|
2 |
<configuration> |
|
3 |
<startup> |
|
4 |
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> |
|
5 |
</startup> |
|
6 |
</configuration> |
trunk/src/UpDateCopy/UpDateCopy/bin/x86/Debug/UpDateCopy.vshost.exe.config | ||
---|---|---|
1 |
<?xml version="1.0" encoding="utf-8" ?> |
|
2 |
<configuration> |
|
3 |
<startup> |
|
4 |
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> |
|
5 |
</startup> |
|
6 |
</configuration> |
trunk/src/UpDateCopy/UpDateCopy/bin/x86/Debug/UpDateCopy.vshost.exe.manifest | ||
---|---|---|
1 |
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> |
|
2 |
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> |
|
3 |
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> |
|
4 |
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> |
|
5 |
<security> |
|
6 |
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> |
|
7 |
<requestedExecutionLevel level="asInvoker" uiAccess="false"/> |
|
8 |
</requestedPrivileges> |
|
9 |
</security> |
|
10 |
</trustInfo> |
|
11 |
</assembly> |
trunk/src/UpDateCopy/UpDateCopy/lib/log4net.xml | ||
---|---|---|
1 |
<?xml version="1.0"?> |
|
2 |
<doc> |
|
3 |
<assembly> |
|
4 |
<name>log4net</name> |
|
5 |
</assembly> |
|
6 |
<members> |
|
7 |
<member name="T:log4net.Appender.AdoNetAppender"> |
|
8 |
<summary> |
|
9 |
Appender that logs to a database. |
|
10 |
</summary> |
|
11 |
<remarks> |
|
12 |
<para> |
|
13 |
<see cref="T:log4net.Appender.AdoNetAppender"/> appends logging events to a table within a |
|
14 |
database. The appender can be configured to specify the connection |
|
15 |
string by setting the <see cref="P:log4net.Appender.AdoNetAppender.ConnectionString"/> property. |
|
16 |
The connection type (provider) can be specified by setting the <see cref="P:log4net.Appender.AdoNetAppender.ConnectionType"/> |
|
17 |
property. For more information on database connection strings for |
|
18 |
your specific database see <a href="http://www.connectionstrings.com/">http://www.connectionstrings.com/</a>. |
|
19 |
</para> |
|
20 |
<para> |
|
21 |
Records are written into the database either using a prepared |
|
22 |
statement or a stored procedure. The <see cref="P:log4net.Appender.AdoNetAppender.CommandType"/> property |
|
23 |
is set to <see cref="F:System.Data.CommandType.Text"/> (<c>System.Data.CommandType.Text</c>) to specify a prepared statement |
|
24 |
or to <see cref="F:System.Data.CommandType.StoredProcedure"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify a stored |
|
25 |
procedure. |
|
26 |
</para> |
|
27 |
<para> |
|
28 |
The prepared statement text or the name of the stored procedure |
|
29 |
must be set in the <see cref="P:log4net.Appender.AdoNetAppender.CommandText"/> property. |
|
30 |
</para> |
|
31 |
<para> |
|
32 |
The prepared statement or stored procedure can take a number |
|
33 |
of parameters. Parameters are added using the <see cref="M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)"/> |
|
34 |
method. This adds a single <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> to the |
|
35 |
ordered list of parameters. The <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> |
|
36 |
type may be subclassed if required to provide database specific |
|
37 |
functionality. The <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> specifies |
|
38 |
the parameter name, database type, size, and how the value should |
|
39 |
be generated using a <see cref="T:log4net.Layout.ILayout"/>. |
|
40 |
</para> |
|
41 |
</remarks> |
|
42 |
<example> |
|
43 |
An example of a SQL Server table that could be logged to: |
|
44 |
<code lang="SQL"> |
|
45 |
CREATE TABLE [dbo].[Log] ( |
|
46 |
[ID] [int] IDENTITY (1, 1) NOT NULL , |
|
47 |
[Date] [datetime] NOT NULL , |
|
48 |
[Thread] [varchar] (255) NOT NULL , |
|
49 |
[Level] [varchar] (20) NOT NULL , |
|
50 |
[Logger] [varchar] (255) NOT NULL , |
|
51 |
[Message] [varchar] (4000) NOT NULL |
|
52 |
) ON [PRIMARY] |
|
53 |
</code> |
|
54 |
</example> |
|
55 |
<example> |
|
56 |
An example configuration to log to the above table: |
|
57 |
<code lang="XML" escaped="true"> |
|
58 |
<appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender"> |
|
59 |
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> |
|
60 |
<connectionString value="data source=SQLSVR;initial catalog=test_log4net;integrated security=false;persist security info=True;User ID=sa;Password=sa"/> |
|
61 |
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)"/> |
|
62 |
<parameter> |
|
63 |
<parameterName value="@log_date"/> |
|
64 |
<dbType value="DateTime"/> |
|
65 |
<layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}"/> |
|
66 |
</parameter> |
|
67 |
<parameter> |
|
68 |
<parameterName value="@thread"/> |
|
69 |
<dbType value="String"/> |
|
70 |
<size value="255"/> |
|
71 |
<layout type="log4net.Layout.PatternLayout" value="%thread"/> |
|
72 |
</parameter> |
|
73 |
<parameter> |
|
74 |
<parameterName value="@log_level"/> |
|
75 |
<dbType value="String"/> |
|
76 |
<size value="50"/> |
|
77 |
<layout type="log4net.Layout.PatternLayout" value="%level"/> |
|
78 |
</parameter> |
|
79 |
<parameter> |
|
80 |
<parameterName value="@logger"/> |
|
81 |
<dbType value="String"/> |
|
82 |
<size value="255"/> |
|
83 |
<layout type="log4net.Layout.PatternLayout" value="%logger"/> |
|
84 |
</parameter> |
|
85 |
<parameter> |
|
86 |
<parameterName value="@message"/> |
|
87 |
<dbType value="String"/> |
|
88 |
<size value="4000"/> |
|
89 |
<layout type="log4net.Layout.PatternLayout" value="%message"/> |
|
90 |
</parameter> |
|
91 |
</appender> |
|
92 |
</code> |
|
93 |
</example> |
|
94 |
<author>Julian Biddle</author> |
|
95 |
<author>Nicko Cadell</author> |
|
96 |
<author>Gert Driesen</author> |
|
97 |
<author>Lance Nehring</author> |
|
98 |
</member> |
|
99 |
<member name="T:log4net.Appender.BufferingAppenderSkeleton"> |
|
100 |
<summary> |
|
101 |
Abstract base class implementation of <see cref="T:log4net.Appender.IAppender"/> that |
|
102 |
buffers events in a fixed size buffer. |
|
103 |
</summary> |
|
104 |
<remarks> |
|
105 |
<para> |
|
106 |
This base class should be used by appenders that need to buffer a |
|
107 |
number of events before logging them. For example the <see cref="T:log4net.Appender.AdoNetAppender"/> |
|
108 |
buffers events and then submits the entire contents of the buffer to |
|
109 |
the underlying database in one go. |
|
110 |
</para> |
|
111 |
<para> |
|
112 |
Subclasses should override the <see cref="M:SendBuffer(LoggingEvent[])"/> |
|
113 |
method to deliver the buffered events. |
|
114 |
</para> |
|
115 |
<para>The BufferingAppenderSkeleton maintains a fixed size cyclic |
|
116 |
buffer of events. The size of the buffer is set using |
|
117 |
the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> property. |
|
118 |
</para> |
|
119 |
<para>A <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> is used to inspect |
|
120 |
each event as it arrives in the appender. If the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> |
|
121 |
triggers, then the current buffer is sent immediately |
|
122 |
(see <see cref="M:SendBuffer(LoggingEvent[])"/>). Otherwise the event |
|
123 |
is stored in the buffer. For example, an evaluator can be used to |
|
124 |
deliver the events immediately when an ERROR event arrives. |
|
125 |
</para> |
|
126 |
<para> |
|
127 |
The buffering appender can be configured in a <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> mode. |
|
128 |
By default the appender is NOT lossy. When the buffer is full all |
|
129 |
the buffered events are sent with <see cref="M:SendBuffer(LoggingEvent[])"/>. |
|
130 |
If the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> property is set to <c>true</c> then the |
|
131 |
buffer will not be sent when it is full, and new events arriving |
|
132 |
in the appender will overwrite the oldest event in the buffer. |
|
133 |
In lossy mode the buffer will only be sent when the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> |
|
134 |
triggers. This can be useful behavior when you need to know about |
|
135 |
ERROR events but not about events with a lower level, configure an |
|
136 |
evaluator that will trigger when an ERROR event arrives, the whole |
|
137 |
buffer will be sent which gives a history of events leading up to |
|
138 |
the ERROR event. |
|
139 |
</para> |
|
140 |
</remarks> |
|
141 |
<author>Nicko Cadell</author> |
|
142 |
<author>Gert Driesen</author> |
|
143 |
</member> |
|
144 |
<member name="T:log4net.Appender.AppenderSkeleton"> |
|
145 |
<summary> |
|
146 |
Abstract base class implementation of <see cref="T:log4net.Appender.IAppender"/>. |
|
147 |
</summary> |
|
148 |
<remarks> |
|
149 |
<para> |
|
150 |
This class provides the code for common functionality, such |
|
151 |
as support for threshold filtering and support for general filters. |
|
152 |
</para> |
|
153 |
<para> |
|
154 |
Appenders can also implement the <see cref="T:log4net.Core.IOptionHandler"/> interface. Therefore |
|
155 |
they would require that the <see cref="M:IOptionHandler.ActivateOptions()"/> method |
|
156 |
be called after the appenders properties have been configured. |
|
157 |
</para> |
|
158 |
</remarks> |
|
159 |
<author>Nicko Cadell</author> |
|
160 |
<author>Gert Driesen</author> |
|
161 |
</member> |
|
162 |
<member name="T:log4net.Appender.IAppender"> |
|
163 |
<summary> |
|
164 |
Implement this interface for your own strategies for printing log statements. |
|
165 |
</summary> |
|
166 |
<remarks> |
|
167 |
<para> |
|
168 |
Implementors should consider extending the <see cref="T:log4net.Appender.AppenderSkeleton"/> |
|
169 |
class which provides a default implementation of this interface. |
|
170 |
</para> |
|
171 |
<para> |
|
172 |
Appenders can also implement the <see cref="T:log4net.Core.IOptionHandler"/> interface. Therefore |
|
173 |
they would require that the <see cref="M:IOptionHandler.ActivateOptions()"/> method |
|
174 |
be called after the appenders properties have been configured. |
|
175 |
</para> |
|
176 |
</remarks> |
|
177 |
<author>Nicko Cadell</author> |
|
178 |
<author>Gert Driesen</author> |
|
179 |
</member> |
|
180 |
<member name="M:log4net.Appender.IAppender.Close"> |
|
181 |
<summary> |
|
182 |
Closes the appender and releases resources. |
|
183 |
</summary> |
|
184 |
<remarks> |
|
185 |
<para> |
|
186 |
Releases any resources allocated within the appender such as file handles, |
|
187 |
network connections, etc. |
|
188 |
</para> |
|
189 |
<para> |
|
190 |
It is a programming error to append to a closed appender. |
|
191 |
</para> |
|
192 |
</remarks> |
|
193 |
</member> |
|
194 |
<member name="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)"> |
|
195 |
<summary> |
|
196 |
Log the logging event in Appender specific way. |
|
197 |
</summary> |
|
198 |
<param name="loggingEvent">The event to log</param> |
|
199 |
<remarks> |
|
200 |
<para> |
|
201 |
This method is called to log a message into this appender. |
|
202 |
</para> |
|
203 |
</remarks> |
|
204 |
</member> |
|
205 |
<member name="P:log4net.Appender.IAppender.Name"> |
|
206 |
<summary> |
|
207 |
Gets or sets the name of this appender. |
|
208 |
</summary> |
|
209 |
<value>The name of the appender.</value> |
|
210 |
<remarks> |
|
211 |
<para>The name uniquely identifies the appender.</para> |
|
212 |
</remarks> |
|
213 |
</member> |
|
214 |
<member name="T:log4net.Appender.IBulkAppender"> |
|
215 |
<summary> |
|
216 |
Interface for appenders that support bulk logging. |
|
217 |
</summary> |
|
218 |
<remarks> |
|
219 |
<para> |
|
220 |
This interface extends the <see cref="T:log4net.Appender.IAppender"/> interface to |
|
221 |
support bulk logging of <see cref="T:log4net.Core.LoggingEvent"/> objects. Appenders |
|
222 |
should only implement this interface if they can bulk log efficiently. |
|
223 |
</para> |
|
224 |
</remarks> |
|
225 |
<author>Nicko Cadell</author> |
|
226 |
</member> |
|
227 |
<member name="M:log4net.Appender.IBulkAppender.DoAppend(log4net.Core.LoggingEvent[])"> |
|
228 |
<summary> |
|
229 |
Log the array of logging events in Appender specific way. |
|
230 |
</summary> |
|
231 |
<param name="loggingEvents">The events to log</param> |
|
232 |
<remarks> |
|
233 |
<para> |
|
234 |
This method is called to log an array of events into this appender. |
|
235 |
</para> |
|
236 |
</remarks> |
|
237 |
</member> |
|
238 |
<member name="T:log4net.Core.IOptionHandler"> |
|
239 |
<summary> |
|
240 |
Interface used to delay activate a configured object. |
|
241 |
</summary> |
|
242 |
<remarks> |
|
243 |
<para> |
|
244 |
This allows an object to defer activation of its options until all |
|
245 |
options have been set. This is required for components which have |
|
246 |
related options that remain ambiguous until all are set. |
|
247 |
</para> |
|
248 |
<para> |
|
249 |
If a component implements this interface then the <see cref="M:log4net.Core.IOptionHandler.ActivateOptions"/> method |
|
250 |
must be called by the container after its all the configured properties have been set |
|
251 |
and before the component can be used. |
|
252 |
</para> |
|
253 |
</remarks> |
|
254 |
<author>Nicko Cadell</author> |
|
255 |
</member> |
|
256 |
<member name="M:log4net.Core.IOptionHandler.ActivateOptions"> |
|
257 |
<summary> |
|
258 |
Activate the options that were previously set with calls to properties. |
|
259 |
</summary> |
|
260 |
<remarks> |
|
261 |
<para> |
|
262 |
This allows an object to defer activation of its options until all |
|
263 |
options have been set. This is required for components which have |
|
264 |
related options that remain ambiguous until all are set. |
|
265 |
</para> |
|
266 |
<para> |
|
267 |
If a component implements this interface then this method must be called |
|
268 |
after its properties have been set before the component can be used. |
|
269 |
</para> |
|
270 |
</remarks> |
|
271 |
</member> |
|
272 |
<member name="F:log4net.Appender.AppenderSkeleton.c_renderBufferSize"> |
|
273 |
<summary> |
|
274 |
Initial buffer size |
|
275 |
</summary> |
|
276 |
</member> |
|
277 |
<member name="F:log4net.Appender.AppenderSkeleton.c_renderBufferMaxCapacity"> |
|
278 |
<summary> |
|
279 |
Maximum buffer size before it is recycled |
|
280 |
</summary> |
|
281 |
</member> |
|
282 |
<member name="M:log4net.Appender.AppenderSkeleton.#ctor"> |
|
283 |
<summary> |
|
284 |
Default constructor |
|
285 |
</summary> |
|
286 |
<remarks> |
|
287 |
<para>Empty default constructor</para> |
|
288 |
</remarks> |
|
289 |
</member> |
|
290 |
<member name="M:log4net.Appender.AppenderSkeleton.Finalize"> |
|
291 |
<summary> |
|
292 |
Finalizes this appender by calling the implementation's |
|
293 |
<see cref="M:log4net.Appender.AppenderSkeleton.Close"/> method. |
|
294 |
</summary> |
|
295 |
<remarks> |
|
296 |
<para> |
|
297 |
If this appender has not been closed then the <c>Finalize</c> method |
|
298 |
will call <see cref="M:log4net.Appender.AppenderSkeleton.Close"/>. |
|
299 |
</para> |
|
300 |
</remarks> |
|
301 |
</member> |
|
302 |
<member name="M:log4net.Appender.AppenderSkeleton.ActivateOptions"> |
|
303 |
<summary> |
|
304 |
Initialize the appender based on the options set |
|
305 |
</summary> |
|
306 |
<remarks> |
|
307 |
<para> |
|
308 |
This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object |
|
309 |
activation scheme. The <see cref="M:log4net.Appender.AppenderSkeleton.ActivateOptions"/> method must |
|
310 |
be called on this object after the configuration properties have |
|
311 |
been set. Until <see cref="M:log4net.Appender.AppenderSkeleton.ActivateOptions"/> is called this |
|
312 |
object is in an undefined state and must not be used. |
|
313 |
</para> |
|
314 |
<para> |
|
315 |
If any of the configuration properties are modified then |
|
316 |
<see cref="M:log4net.Appender.AppenderSkeleton.ActivateOptions"/> must be called again. |
|
317 |
</para> |
|
318 |
</remarks> |
|
319 |
</member> |
|
320 |
<member name="M:log4net.Appender.AppenderSkeleton.Close"> |
|
321 |
<summary> |
|
322 |
Closes the appender and release resources. |
|
323 |
</summary> |
|
324 |
<remarks> |
|
325 |
<para> |
|
326 |
Release any resources allocated within the appender such as file handles, |
|
327 |
network connections, etc. |
|
328 |
</para> |
|
329 |
<para> |
|
330 |
It is a programming error to append to a closed appender. |
|
331 |
</para> |
|
332 |
<para> |
|
333 |
This method cannot be overridden by subclasses. This method |
|
334 |
delegates the closing of the appender to the <see cref="M:log4net.Appender.AppenderSkeleton.OnClose"/> |
|
335 |
method which must be overridden in the subclass. |
|
336 |
</para> |
|
337 |
</remarks> |
|
338 |
</member> |
|
339 |
<member name="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"> |
|
340 |
<summary> |
|
341 |
Performs threshold checks and invokes filters before |
|
342 |
delegating actual logging to the subclasses specific |
|
343 |
<see cref="M:Append(LoggingEvent)"/> method. |
他の形式にエクスポート: Unified diff