docx, xlsx, pptx の中に張り付けられた PNG ( BMP ) を JPEG へ変換して docx, xlsx, pptx のファイルサイズを削減する。
Revision | 152 (tree) |
---|---|
Time | 2019-05-08 13:25:05 |
Author | hor931101jp |
(empty log message)
@@ -0,0 +1,153 @@ | ||
1 | +using System; | |
2 | +using System.Windows.Forms; | |
3 | + | |
4 | +/// <summary> | |
5 | +/// 共通部品 | |
6 | +/// </summary> | |
7 | +namespace OfficeImageReducer | |
8 | +{ | |
9 | + /// <summary> | |
10 | + /// 共通部品クラス | |
11 | + /// よく使う処理とかオブジェクトを定義 | |
12 | + /// </summary> | |
13 | + public class ClassMyCommon | |
14 | + { | |
15 | + /// <summary>プログラムのタイトル</summary> | |
16 | + public const string TITLE = "Office Image Reducer"; | |
17 | + | |
18 | + /// <summary>プログラムのバージョン</summary> | |
19 | + public const string VERSION = "04.03-190509"; | |
20 | + | |
21 | + /// <summary>プログラム開始時の表示メッセージ</summary> | |
22 | + public const string OPENING_MSG = | |
23 | + "Programmed by S.Hori\r\n" + | |
24 | + "\r\n" + | |
25 | + "下記のWEBサイトから最新版を入手できます。\r\n" + | |
26 | + "This software is hosted in the following site.\r\n" + | |
27 | + "https://ja.osdn.net/users/hor931101jp/pf/01\r\n" + | |
28 | + "下記のSVNリポジトリからソースコードをチェックアウトできます。\r\n" + | |
29 | + "Anonymous access will allow anyone to download the source code.\r\n" + | |
30 | + "svn://svn.pf.osdn.jp/h/ho/hor931101jp/01/tags\r\n" + | |
31 | + "\r\n" + | |
32 | + "ここに docx xlsx pptx ファイルをドラックアンドドロップしてください。\r\n" + | |
33 | + "Please drag and drop docx, xlsx, pptx files here.\r\n"; | |
34 | + | |
35 | + /// <summary>メインフォームのインスタンス</summary> | |
36 | + public static Form frmMain; | |
37 | + | |
38 | + /// <summary>ログのインスタンス</summary> | |
39 | + static public ClassLog Log; | |
40 | + | |
41 | + /// <summary> | |
42 | + /// Application.DoEventsとThread.Sleepをしながら待機処理 | |
43 | + /// </summary> | |
44 | + /// <param name="WaitTime">待ち時間[ms]</param> | |
45 | + static public void WaitTickCount(Int32 WaitTime) | |
46 | + { | |
47 | + Int64 StartTickCount = Environment.TickCount; | |
48 | + Int64 NowTickCount; | |
49 | + do | |
50 | + { | |
51 | + Application.DoEvents(); | |
52 | + System.Threading.Thread.Sleep(1); | |
53 | + NowTickCount = Environment.TickCount; | |
54 | + } | |
55 | + while ((NowTickCount - StartTickCount) < WaitTime); | |
56 | + } | |
57 | + | |
58 | + [System.Runtime.InteropServices.DllImport("user32.dll")] | |
59 | + private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert); | |
60 | + | |
61 | + [System.Runtime.InteropServices.DllImport("user32.dll")] | |
62 | + private static extern bool DrawMenuBar(IntPtr hWnd); | |
63 | + | |
64 | + [System.Runtime.InteropServices.DllImport("user32.dll")] | |
65 | + private static extern bool RemoveMenu(IntPtr hMenu, uint uPosition, uint uFlags); | |
66 | + | |
67 | + /// <summary> | |
68 | + /// フォームの右上ボタンと左上メニューのカスタマイズ | |
69 | + /// フォーム右上ボタンのうち[x]ボタンを無効化する | |
70 | + /// 左上メニューの[閉じる]を非表示 | |
71 | + /// </summary> | |
72 | + /// <param name="f">対象とするフォーム</param> | |
73 | + public static void FormControlBoxCustomize(Form f) | |
74 | + { | |
75 | + //const uint SC_SIZE = 0xF000; //システムメニューの「サイズ変更」 | |
76 | + //const uint SC_MOVE = 0xF010; //システムメニューの「移動」 | |
77 | + //const uint SC_MINIMIZE = 0xF020; //システムメニューの「最小化」 | |
78 | + //const uint SC_MAXIMIZE = 0xF030; //システムメニューの「最大化」 | |
79 | + const uint SC_CLOSE = 0xF060; //システムメニューの「閉じる」 | |
80 | + //const uint SC_RESTORE = 0xF120; //システムメニューの「元のサイズに戻す」 | |
81 | + const uint MF_BYCOMMAND = 0x0; //メニュー項目指定 | |
82 | + const uint MF_BYPOSITION = 0x400; //ポジション指定 | |
83 | + //const uint MF_ENABLED = 0x0; //有効化 | |
84 | + //const uint MF_GRAYED = 0x1; //無効化 | |
85 | + //const uint MF_DISABLED = 0x2; //半無効化(見かけ上有効) | |
86 | + bool DUMMY; | |
87 | + | |
88 | + //「区切り線」の削除 | |
89 | + DUMMY = RemoveMenu(GetSystemMenu(f.Handle, false), 5, MF_BYPOSITION); | |
90 | + //「閉じる」の削除 + xボタンの無効化 | |
91 | + DUMMY = RemoveMenu(GetSystemMenu(f.Handle, false), SC_CLOSE, MF_BYCOMMAND); | |
92 | + //描画(変更を反映) | |
93 | + DUMMY = DrawMenuBar(f.Handle); | |
94 | + } | |
95 | + | |
96 | + /// <summary> | |
97 | + /// 自身の exe ファイルの存在するフォルダをフルパスで返す | |
98 | + /// </summary> | |
99 | + /// <returns>戻り値(パス)は最後に '\' 付き</returns> | |
100 | + public static string AppPath() | |
101 | + { | |
102 | + return System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\"; | |
103 | + } | |
104 | + | |
105 | + /// <summary> | |
106 | + /// 文字列を渡して先頭から指定した長さだけの文字列を切り出して返す | |
107 | + /// BASICに昔からある Left$ 関数 | |
108 | + /// </summary> | |
109 | + /// <param name="str">文字列</param> | |
110 | + /// <param name="len">長さ</param> | |
111 | + /// <returns>切り出した文字列</returns> | |
112 | + public static string Left(string str, int len) | |
113 | + { | |
114 | + if (len < 0) | |
115 | + { | |
116 | + throw new ArgumentException("引数'len'は0以上でなければなりません。"); | |
117 | + } | |
118 | + if (str == null) | |
119 | + { | |
120 | + return ""; | |
121 | + } | |
122 | + if (str.Length <= len) | |
123 | + { | |
124 | + return str; | |
125 | + } | |
126 | + return str.Substring(0, len); | |
127 | + } | |
128 | + | |
129 | + /// <summary> | |
130 | + /// 文字列の末尾から指定した長さの文字列を取得する | |
131 | + /// BASICに昔からある Right$ 関数 | |
132 | + /// </summary> | |
133 | + /// <param name="str">文字列</param> | |
134 | + /// <param name="len">長さ</param> | |
135 | + /// <returns>切り出した文字列</returns> | |
136 | + public static string Right(string str, int len) | |
137 | + { | |
138 | + if (len < 0) | |
139 | + { | |
140 | + throw new ArgumentException("引数'len'は0以上でなければなりません。"); | |
141 | + } | |
142 | + if (str == null) | |
143 | + { | |
144 | + return ""; | |
145 | + } | |
146 | + if (str.Length <= len) | |
147 | + { | |
148 | + return str; | |
149 | + } | |
150 | + return str.Substring(str.Length - len, len); | |
151 | + } | |
152 | + } | |
153 | +} | |
\ No newline at end of file |
@@ -0,0 +1,744 @@ | ||
1 | +using System; | |
2 | +using System.Drawing; | |
3 | +using System.IO; | |
4 | +using System.IO.Compression; | |
5 | +using System.Text; | |
6 | +using System.Windows.Forms; | |
7 | +using Microsoft.Office.Interop.Excel; | |
8 | +using Microsoft.Office.Interop.Word; | |
9 | +using Microsoft.Office.Interop.PowerPoint; | |
10 | +using static OfficeImageReducer.ClassMyCommon; | |
11 | + | |
12 | +/// <summary> | |
13 | +/// メインフォームに関する処理 | |
14 | +/// </summary> | |
15 | +namespace OfficeImageReducer | |
16 | +{ | |
17 | + /// <summary> | |
18 | + /// メインウインドウフォーム | |
19 | + /// </summary> | |
20 | + public partial class FormMain : Form | |
21 | + { | |
22 | + /// <summary> | |
23 | + /// ZIP解凍用の一時ファイルネーム | |
24 | + /// </summary> | |
25 | + private string ZipFileName; | |
26 | + | |
27 | + /// <summary> | |
28 | + /// ZIP解凍用の一時解凍先フォルダネーム | |
29 | + /// </summary> | |
30 | + private string ExtractPath; | |
31 | + | |
32 | + /// <summary> | |
33 | + /// コンストラクタ | |
34 | + /// </summary> | |
35 | + public FormMain() | |
36 | + { | |
37 | + InitializeComponent(); | |
38 | + } | |
39 | + | |
40 | + /// <summary> | |
41 | + /// フォームロードイベント | |
42 | + /// </summary> | |
43 | + /// <param name="sender">イベントを発生させたオブジェクトへの参照</param> | |
44 | + /// <param name="e">処理されるイベントに応じた特定のオブジェクト</param> | |
45 | + private void FormMain_Load(object sender, EventArgs e) | |
46 | + { | |
47 | +#if false | |
48 | + // 多重起動チェック | |
49 | + //Process.GetProcessesByName メソッド | |
50 | + //指定したプロセス名を共有するリモートコンピュータ上の | |
51 | + //すべてのプロセスリソースに関連付けます。 | |
52 | + string pn = System.Diagnostics.Process.GetCurrentProcess().ProcessName; //Process.ProcessName プロパティ(プロセスの名前を取得します) | |
53 | + if (System.Diagnostics.Process.GetProcessesByName(pn).GetUpperBound(0) > 0) | |
54 | + { | |
55 | + //! 多重起動しているならばエラーメッセージ表示して終了 | |
56 | + MessageBox.Show("すでに起動しています。", TITLE + " エラーメッセージ", | |
57 | + MessageBoxButtons.OK, | |
58 | + MessageBoxIcon.Error); | |
59 | + Environment.Exit(0); | |
60 | + } | |
61 | +#endif | |
62 | + frmMain = this; | |
63 | + //! フォームの右上ボタンと左上の右クリックメニューをカスタマイズ | |
64 | + FormControlBoxCustomize(this); | |
65 | + Log = new ClassLog(textBox1); | |
66 | + this.Text = TITLE + " " + VERSION; | |
67 | + //! オープニングメッセージを表示 | |
68 | + button1.PerformClick(); | |
69 | + // 表示開始後0.5秒は最前面にもってくる | |
70 | + Show(); | |
71 | + TopMost = true; | |
72 | + WaitTickCount(500); | |
73 | + TopMost = false; | |
74 | + } | |
75 | + | |
76 | + /// <summary> | |
77 | + /// [About]ボタンクリックイベント | |
78 | + /// プログラムタイトル バージョン オープニングメッセージを表示 | |
79 | + /// </summary> | |
80 | + /// <param name="sender">イベントを発生させたオブジェクトへの参照</param> | |
81 | + /// <param name="e">処理されるイベントに応じた特定のオブジェクト</param> | |
82 | + private void button1_Click(object sender, EventArgs e) | |
83 | + { | |
84 | + Log.Put( | |
85 | + "----------------------------------------------------------------\r\n" | |
86 | + + TITLE + " " + VERSION + "\r\n" | |
87 | + + OPENING_MSG | |
88 | + + "\r\n" | |
89 | + + "----------------------------------------------------------------\r\n" | |
90 | + ); | |
91 | + } | |
92 | + | |
93 | + /// <summary> | |
94 | + /// [Clear Log]ボタンクリックイベント | |
95 | + /// </summary> | |
96 | + /// <param name="sender">イベントを発生させたオブジェクトへの参照</param> | |
97 | + /// <param name="e">処理されるイベントに応じた特定のオブジェクト</param> | |
98 | + private void button2_Click(object sender, EventArgs e) | |
99 | + { | |
100 | + Log.Clear(); | |
101 | + } | |
102 | + | |
103 | + /// <summary> | |
104 | + /// [Quit]ボタンクリックイベント | |
105 | + /// </summary> | |
106 | + /// <param name="sender">イベントを発生させたオブジェクトへの参照</param> | |
107 | + /// <param name="e">処理されるイベントに応じた特定のオブジェクト</param> | |
108 | + private void button3_Click(object sender, EventArgs e) | |
109 | + { | |
110 | + Close(); | |
111 | + } | |
112 | + | |
113 | + /// <summary> | |
114 | + /// ログテキストエリアのドラッグエンターイベント | |
115 | + /// ドラッグエンターされたものがファイルの場合のみ、ドラッグを受け付ける | |
116 | + /// </summary> | |
117 | + /// <param name="sender">イベントを発生させたオブジェクトへの参照</param> | |
118 | + /// <param name="e">処理されるイベントに応じた特定のオブジェクト</param> | |
119 | + private void textBox1_DragEnter(object sender, DragEventArgs e) | |
120 | + { | |
121 | + if (e.Data.GetDataPresent(DataFormats.FileDrop) == true) | |
122 | + { | |
123 | + e.Effect = DragDropEffects.Copy; | |
124 | + } | |
125 | + else | |
126 | + { | |
127 | + e.Effect = DragDropEffects.None; | |
128 | + } | |
129 | + } | |
130 | + | |
131 | + /// <summary> | |
132 | + /// ドロップされた時の処理 | |
133 | + /// </summary> | |
134 | + /// <param name="sender">イベントを発生させたオブジェクトへの参照</param> | |
135 | + /// <param name="e">処理されるイベントに応じた特定のオブジェクト</param> | |
136 | + private void textBox1_DragDrop(object sender, DragEventArgs e) | |
137 | + { | |
138 | + Color textBox1BackColor = textBox1.BackColor; | |
139 | + | |
140 | + //! 作業中はさらにドラッグ&ドロップできないようにする | |
141 | + textBox1.Enabled = false; | |
142 | + textBox1.BackColor = this.BackColor; | |
143 | + | |
144 | + //! ドラッグされたファイル・フォルダのパスを格納 | |
145 | + string[] strFileNames = (string[])e.Data.GetData(DataFormats.FileDrop, false); | |
146 | + | |
147 | + //! ひとつずつoffice2007ファイルをメイン処理に渡す。 | |
148 | + foreach (string strFileName in strFileNames) | |
149 | + { | |
150 | + Main_Process(strFileName); | |
151 | + WaitTickCount(100); | |
152 | + } | |
153 | + | |
154 | + textBox1.Enabled = true; | |
155 | + textBox1.BackColor = textBox1BackColor; | |
156 | + } | |
157 | + | |
158 | + /// <summary> | |
159 | + /// フォルダを再帰的に下りて全ファイルの属性を削除 | |
160 | + /// </summary> | |
161 | + /// <param name="dirInfo">dirInfo フォルダ操作用インスタンス</param> | |
162 | + private void RemoveReadonlyAttribute(DirectoryInfo dirInfo) | |
163 | + { | |
164 | + try | |
165 | + { | |
166 | + //基のフォルダの属性を変更 | |
167 | + if ((dirInfo.Attributes & FileAttributes.ReadOnly) == | |
168 | + FileAttributes.ReadOnly) | |
169 | + dirInfo.Attributes = FileAttributes.Normal; | |
170 | + //フォルダ内のすべてのファイルの属性を変更 | |
171 | + foreach (FileInfo fi in dirInfo.GetFiles()) | |
172 | + if ((fi.Attributes & FileAttributes.ReadOnly) == | |
173 | + FileAttributes.ReadOnly) | |
174 | + fi.Attributes = FileAttributes.Normal; | |
175 | + //サブフォルダの属性を回帰的に変更 | |
176 | + foreach (DirectoryInfo di in dirInfo.GetDirectories()) | |
177 | + RemoveReadonlyAttribute(di); | |
178 | + } | |
179 | + catch (Exception ex) | |
180 | + { | |
181 | + Log.Put("Error:RemoveReadonlyAttribute():ex.Message\r\n" + ex.Message); | |
182 | + Log.Put("Error:RemoveReadonlyAttribute():ex.StacTrace\r\n" + ex.StackTrace); | |
183 | + } | |
184 | + } | |
185 | + | |
186 | + /// <summary> | |
187 | + /// 作業終了後のクリーンアップ処理 | |
188 | + /// 作業用フォルダとZIPが残っていれば削除 | |
189 | + /// </summary> | |
190 | + private void CleanUp() | |
191 | + { | |
192 | + if (ExtractPath != "") | |
193 | + { | |
194 | + try | |
195 | + { | |
196 | + if (Directory.Exists(ExtractPath)) | |
197 | + { | |
198 | + //DirectoryInfoオブジェクトの作成 | |
199 | + DirectoryInfo di = new DirectoryInfo(ExtractPath); | |
200 | + | |
201 | + //フォルダ以下のすべてのファイル、フォルダの属性を削除 | |
202 | + RemoveReadonlyAttribute(di); | |
203 | + | |
204 | + //フォルダを根こそぎ削除 | |
205 | + //di.Delete(true); | |
206 | + Directory.Delete(ExtractPath, true); | |
207 | + } | |
208 | + } | |
209 | + catch (Exception ex) | |
210 | + { | |
211 | + Log.Put("Error:CleanUp():ex.Message\r\n" + ex.Message); | |
212 | + Log.Put("Error:CleanUp():ex.StacTrace\r\n" + ex.StackTrace); | |
213 | + } | |
214 | + } | |
215 | + | |
216 | + if (ZipFileName != null) | |
217 | + { | |
218 | + File.Delete(ZipFileName); | |
219 | + } | |
220 | + } | |
221 | + | |
222 | + /// <summary> | |
223 | + /// PNGファイルの中に透明色(tRNSチャンク)透過色(αチャンネル)があるか判定する | |
224 | + /// </summary> | |
225 | + /// <param name="PngFileName">フルパス付きPNGファイルネーム</param> | |
226 | + /// <returns>0:透明色透過色なし 1:tRNSチャンク透明色あり 2:αチャンネル透過色あり</returns> | |
227 | + private int PngTransCheck(string PngFileName) | |
228 | + { | |
229 | + //Log.Put("tRNS Chunk Check:" + PngFileName); | |
230 | + string[] StrArray; | |
231 | + StrArray = PngFileName.Split('\\'); | |
232 | + string SplitPngFileName = StrArray[StrArray.Length - 1]; | |
233 | + | |
234 | + int fileSize = 0; //ファイルのサイズ | |
235 | + int bufPos = 0; //データ格納用配列内の追加位置 | |
236 | + Byte[] buf = null; //データ格納用配列を仮確保 | |
237 | + //Array.Resize(ref buf, 1); | |
238 | + | |
239 | + using (FileStream fs = new FileStream(PngFileName, FileMode.Open, FileAccess.Read)) | |
240 | + { | |
241 | + fileSize = (int)fs.Length; //ファイルのサイズ | |
242 | + Array.Resize(ref buf, fileSize); //データ格納用配列サイズ決定 | |
243 | + | |
244 | + int readSize; //Readメソッドで読み込んだバイト数 | |
245 | + int remain = fileSize; //読み込むべき残りのバイト数 | |
246 | + | |
247 | + while (remain > 0) | |
248 | + { | |
249 | + //1024Bytesずつ読み込む | |
250 | + readSize = fs.Read(buf, bufPos, Math.Min(1024, remain)); | |
251 | + bufPos += readSize; | |
252 | + remain -= readSize; | |
253 | + } | |
254 | + } | |
255 | + | |
256 | + //buf[] をチェック | |
257 | + bufPos = 8; //8byte目から確認 | |
258 | + int ChunkSize; | |
259 | + while (bufPos < fileSize) | |
260 | + { | |
261 | + ChunkSize = (buf[bufPos] << 24) + (buf[bufPos + 1] << 16) + (buf[bufPos + 2] << 8) + buf[bufPos + 3]; | |
262 | + //Log.Put("chunksize=" + ChunkSize.ToString); | |
263 | + bufPos += 4; | |
264 | + if (buf[bufPos] == 't' && buf[bufPos + 1] == 'R' | |
265 | + && buf[bufPos + 2] == 'N' && buf[bufPos + 3] == 'S') | |
266 | + { | |
267 | + Log.Put("tRNSチャンクを検出しました。透明色があります。"); | |
268 | + Log.Put("tRNS chunk was detected. There is a transparent color."); | |
269 | + //Log.Put(SplitPngFileName + " has tRNS chunk."); | |
270 | + return 1; | |
271 | + } | |
272 | + bufPos += 4; | |
273 | + bufPos += ChunkSize; | |
274 | + bufPos += 4; | |
275 | + } | |
276 | + | |
277 | + // PNG(BMP)ファイルオープン | |
278 | + using (Bitmap bmp = new Bitmap(PngFileName)) | |
279 | + { | |
280 | + if (bmp.PixelFormat == System.Drawing.Imaging.PixelFormat.Format32bppArgb | |
281 | + || bmp.PixelFormat == System.Drawing.Imaging.PixelFormat.Format32bppPArgb) | |
282 | + { | |
283 | + //アルファチャンネルのあるPNGフォーマット | |
284 | + | |
285 | + System.Drawing.Imaging.BitmapData bmpdat; | |
286 | + | |
287 | + bmpdat = bmp.LockBits(new System.Drawing.Rectangle(System.Drawing.Point.Empty, bmp.Size), | |
288 | + System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat); | |
289 | + | |
290 | + Array.Resize(ref buf, bmp.Width * bmp.Height * 4); //データ格納用配列サイズ決定 | |
291 | + System.Runtime.InteropServices.Marshal.Copy(bmpdat.Scan0, buf, 0, buf.Length); | |
292 | + int PixelX; | |
293 | + int PixelY; | |
294 | + | |
295 | + for (PixelY = 0; PixelY < bmp.Height; PixelY++) | |
296 | + { | |
297 | + System.Windows.Forms.Application.DoEvents(); | |
298 | + for (PixelX = 0; PixelX < bmp.Width; PixelX++) | |
299 | + { | |
300 | + Byte Alpha; //αチャンネル 0:透明 ~ 255:完全不透明 | |
301 | + Byte Red; | |
302 | + Byte Green; | |
303 | + Byte Blue; | |
304 | + | |
305 | + Alpha = buf[(PixelY * bmp.Width + PixelX) * 4 + 3]; | |
306 | + Red = buf[(PixelY * bmp.Width + PixelX) * 4 + 2]; | |
307 | + Green = buf[(PixelY * bmp.Width + PixelX) * 4 + 1]; | |
308 | + Blue = buf[(PixelY * bmp.Width + PixelX) * 4 + 0]; | |
309 | + if (Alpha < 255) | |
310 | + { | |
311 | + Log.Put("αチャンネルを検出しました。透過色があります。"); | |
312 | + Log.Put("Alpha channel was detected. There is a transparent color."); | |
313 | + //Log.Put(SplitPngFileName + " has alpha chunnel."); | |
314 | + //Log.Put("X,Y ARGB = " + PixelX + "," + PixelY + "," + Alpha + "," + Red + "," + Green + "," + Blue); | |
315 | + //!αチャンネル255未満を検出したら1を返す (0:透明 ~ 255:完全不透明) | |
316 | + return 2; | |
317 | + } | |
318 | + } | |
319 | + } | |
320 | + } | |
321 | + } | |
322 | + | |
323 | + return 0; | |
324 | + } | |
325 | + | |
326 | + /// <summary> | |
327 | + /// メイン処理 | |
328 | + /// </summary> | |
329 | + /// <param name="OrgFileName">Office2007形式のフルパス付ファイルネーム</param> | |
330 | + private void Main_Process(string OrgFileName) | |
331 | + { | |
332 | + //! ファイルの存在確認を行い、なければ終了。引数がフォルダ名だった場合も終了 | |
333 | + if (File.Exists(OrgFileName) == false) | |
334 | + { | |
335 | + return; | |
336 | + } | |
337 | + | |
338 | + // ログにパスを表示 | |
339 | + Log.Put("===================="); | |
340 | + Log.Put(OrgFileName); | |
341 | + System.Windows.Forms.Application.DoEvents(); | |
342 | + | |
343 | + // PNGからJPGへ変換されたファイル数 | |
344 | + UInt32 JPGcount = 0; | |
345 | + // ZIP解凍用の一時ファイルネーム | |
346 | + ZipFileName = Path.GetDirectoryName(OrgFileName) + "\\~OfficeImgRedTemp.zip"; | |
347 | + // ZIP解凍用の一時解凍先フォルダネーム | |
348 | + ExtractPath = Path.GetDirectoryName(OrgFileName) + "\\~OfficeImgRedExtract"; | |
349 | + // Office2007系ファイルの中にあるコンテンツの管理ファイル | |
350 | + string CurrentTypesFileName = ExtractPath + "\\[Content_Types].xml"; | |
351 | + | |
352 | + CleanUp(); | |
353 | + | |
354 | + //! office2007ファイルでなければ終了 | |
355 | + string FileExtension = OrgFileName.Substring(OrgFileName.Length - 5).ToLower(); | |
356 | + if ((FileExtension != ".xlsx") && | |
357 | + (FileExtension != ".xlsm") && | |
358 | + (FileExtension != ".pptx") && | |
359 | + (FileExtension != ".pptm") && | |
360 | + (FileExtension != ".docx") && | |
361 | + (FileExtension != ".docm")) | |
362 | + { | |
363 | + Log.Put("office2007 ファイル以外には対応していません。"); | |
364 | + Log.Put("It is not a OFFICE2007 file."); | |
365 | + return; | |
366 | + } | |
367 | + | |
368 | + // ファイルの拡張子をピリオドなしで格納 | |
369 | + FileExtension = OrgFileName.Substring(OrgFileName.Length - 4).ToLower(); | |
370 | + | |
371 | + Log.Put("analyzing..."); | |
372 | + | |
373 | + try | |
374 | + { | |
375 | + // 前の処理の残骸残っていればクリーンナップ | |
376 | + CleanUp(); | |
377 | + | |
378 | + //! office2007ファイルをZIPファイルへリネームコピー | |
379 | + File.Copy(OrgFileName, ZipFileName); | |
380 | + // ZIP解凍作業用フォルダ作成 | |
381 | + try | |
382 | + { | |
383 | + Directory.CreateDirectory(ExtractPath); | |
384 | + } | |
385 | + catch (Exception ex) | |
386 | + { | |
387 | + Log.Put("作業用フォルダの作成に失敗しました。:" + ex.Message); | |
388 | + } | |
389 | + | |
390 | + // ZIP解凍 | |
391 | + // リューション エクスプローラー内、[参照設定] から | |
392 | + // ZipFile クラスを含む DLL(System.IO.Compression.FileSystem.dll) を手動で追加すること | |
393 | + ZipFile.ExtractToDirectory(ZipFileName, ExtractPath, Encoding.GetEncoding("shift_jis")); | |
394 | + | |
395 | + // 解凍したZIPの中に [Content_Types].xml があるかどうか確認する。 | |
396 | + if (!(File.Exists(CurrentTypesFileName))) | |
397 | + { | |
398 | + // 存在しないならクリーンアップして終了。 | |
399 | + Log.Put("対象ファイルの解析ができません。"); | |
400 | + CleanUp(); | |
401 | + return; | |
402 | + } | |
403 | + | |
404 | + // PNGを格納しているパス | |
405 | + string MediaPath; | |
406 | + if (Directory.Exists(ExtractPath + "\\xl\\media\\")) | |
407 | + { | |
408 | + MediaPath = ExtractPath + "\\xl\\media"; | |
409 | + } | |
410 | + else if (Directory.Exists(ExtractPath + "\\ppt\\media\\")) | |
411 | + { | |
412 | + MediaPath = ExtractPath + "\\ppt\\media"; | |
413 | + } | |
414 | + else if (Directory.Exists(ExtractPath + "\\word\\media\\")) | |
415 | + { | |
416 | + MediaPath = ExtractPath + "\\word\\media"; | |
417 | + } | |
418 | + else | |
419 | + { | |
420 | + Log.Put("ファイルの中にメディア格納フォルダがありません。"); | |
421 | + Log.Put("There is no media folder in the file."); | |
422 | + CleanUp(); | |
423 | + return; | |
424 | + } | |
425 | + | |
426 | + // フルパス付PNGファイル名 | |
427 | + string[] MediaFileNames = Directory.GetFiles(MediaPath, "*.png"); | |
428 | + if (MediaFileNames.Length == 0) | |
429 | + { | |
430 | + Log.Put("ファイルの中にPNG(BMP)ファイルがありません。"); | |
431 | + Log.Put("There is no PNG(BMP) in the file."); | |
432 | + CleanUp(); | |
433 | + return; | |
434 | + } | |
435 | +#if false | |
436 | + foreach (string MediaFileName in MediaFileNames) | |
437 | + { | |
438 | + Log.Put(MediaFileName); | |
439 | + } | |
440 | +#endif | |
441 | + // *.rels リレーションファイルすべてをリストアップ | |
442 | + string[] RelsFileNames = Directory.GetFiles(ExtractPath, "*.rels", SearchOption.AllDirectories); | |
443 | +#if false | |
444 | + foreach (string RelsFileName in RelsFileNames) | |
445 | + { | |
446 | + Log.Put(RelsFileName); | |
447 | + } | |
448 | +#endif | |
449 | + // 作業用文字列の配列 | |
450 | + string[] StrArray; | |
451 | + // ファイル読み出しデータ格納用文字列 | |
452 | + string Result = String.Empty; | |
453 | + | |
454 | + // 取得したPNGファイルの処理をする | |
455 | + foreach (string MediaFileName in MediaFileNames) | |
456 | + { | |
457 | + StrArray = MediaFileName.Split('\\'); | |
458 | + // パスなしPNGファイル名を格納 | |
459 | + string SplitMediaFileName = StrArray[StrArray.Length - 1]; | |
460 | + Log.Put("---"); | |
461 | + Log.Put(SplitMediaFileName); | |
462 | + | |
463 | + // PNGファイルのサイズを取得 | |
464 | + long Medialen = new FileInfo(MediaFileName).Length; | |
465 | + | |
466 | + // 作業用JPGファイル | |
467 | + string TmpJpgFileName = MediaPath + "~OfficeImgRedtemp.jpg"; | |
468 | + | |
469 | + //PNGファイルを開く | |
470 | + try | |
471 | + { | |
472 | + //前回の作業ファイルが残っていれば削除する | |
473 | + File.Delete(TmpJpgFileName); | |
474 | + | |
475 | + //PNGに透過透明がある場合はJPG化せず、次のPNGファイルを処理する | |
476 | + if (0 != PngTransCheck(MediaFileName)) | |
477 | + { | |
478 | + //Log.Put("透過色"); | |
479 | + continue; | |
480 | + } | |
481 | + // PNG(BMP)ファイルオープン | |
482 | + using (Bitmap bmp = new Bitmap(MediaFileName)) | |
483 | + { | |
484 | + //JPEG形式で保存する | |
485 | + bmp.Save(TmpJpgFileName, System.Drawing.Imaging.ImageFormat.Jpeg); | |
486 | + } | |
487 | + } | |
488 | + catch | |
489 | + { | |
490 | + // 不正なBMP/PNGであればオープン時に例外が発生する。 | |
491 | + File.Delete(TmpJpgFileName); | |
492 | + // 次のPNGファイルの処理へ | |
493 | + continue; | |
494 | + } | |
495 | + | |
496 | + // 生成されたJPGファイルサイズを格納 | |
497 | + long Jpglen = new FileInfo(TmpJpgFileName).Length; | |
498 | + | |
499 | + // 生成されたJPGファイルがもとのPNGより20%以上縮小された場合はJPGを採用する | |
500 | + if (Jpglen > (Medialen * 0.8)) | |
501 | + { | |
502 | + // 生成されたJPGファイルがもとのPNGより20%以上縮小されなかった場合 | |
503 | + Log.Put("JPG化してもサイズが小さくなりませんでした。"); | |
504 | + Log.Put("The data size was not become smaller."); | |
505 | + File.Delete(TmpJpgFileName); | |
506 | + } | |
507 | + else | |
508 | + { | |
509 | + // 生成されたJPGファイルがもとのPNGより20%以上縮小された場合 | |
510 | + // フルパス付JPGファイル名 | |
511 | + string NewMediaFileName = ""; | |
512 | + int j; | |
513 | + for (j = 0; ; j++) | |
514 | + { | |
515 | + // フルパス付JPGファイル名候補を格納 | |
516 | + if (j == 0) | |
517 | + { | |
518 | + NewMediaFileName = MediaFileName.Substring(0, MediaFileName.Length - 4) + ".jpeg"; | |
519 | + } | |
520 | + else | |
521 | + { | |
522 | + NewMediaFileName = MediaFileName.Substring(0, MediaFileName.Length - 4) + "(" + (j - 1).ToString() + ").jpeg"; | |
523 | + } | |
524 | + | |
525 | + // 一時ファイネームのJPGを正式なファイル名に変更する。 | |
526 | + if (File.Exists(NewMediaFileName) == true) | |
527 | + { | |
528 | + // JPGファイルネームがかぶった場合は9999回までリトライするが、それでもだめだった場合はあきらめる | |
529 | + if (j > 9999) | |
530 | + { | |
531 | + break; | |
532 | + } | |
533 | + | |
534 | + // JPGファイルネームがかぶった場合はリトライ | |
535 | + continue; | |
536 | + } | |
537 | + else | |
538 | + { | |
539 | + // リネームする | |
540 | + File.Move(TmpJpgFileName, NewMediaFileName); | |
541 | + // もとからあったPNGファイルを削除 | |
542 | + File.Delete(MediaFileName); | |
543 | + break; // forループ脱出 | |
544 | + } | |
545 | + } | |
546 | + if (j > 9999) | |
547 | + { | |
548 | + // 9999回までリトライしてだめならあきらめて次のPNGファイルを処理する。 | |
549 | + File.Delete(TmpJpgFileName); | |
550 | + continue; | |
551 | + } | |
552 | + | |
553 | + StrArray = NewMediaFileName.Split('\\'); | |
554 | + // フルパスなしJPGファイル名を格納 | |
555 | + string SplitNewMediaFileName = StrArray[StrArray.Length - 1]; | |
556 | + //Log.Put(SplitMediaFileName + " was converted to " + SplitNewMediaFileName + "."); | |
557 | + Log.Put(SplitMediaFileName.Split('.')[0] + " was converted to JPG."); | |
558 | + // JPGに変換したPNGファイルの数をカウント | |
559 | + JPGcount = JPGcount + 1; | |
560 | + | |
561 | + System.Windows.Forms.Application.DoEvents(); //ログ表示更新の為 | |
562 | + | |
563 | + // リレーションファイル内のPNGファイル名をJPGファイル名にする | |
564 | + foreach (string RelsFileName in RelsFileNames) | |
565 | + { | |
566 | + // リレーションファイルの中身を読みだす | |
567 | + Result = String.Empty; | |
568 | + using (StreamReader Reader = new StreamReader(RelsFileName, Encoding.GetEncoding("shift-jis"))) | |
569 | + { | |
570 | + Result = Reader.ReadToEnd(); | |
571 | + //Log.Put(Result); | |
572 | + } | |
573 | + | |
574 | + // リレーションファイルの中にPNGファイルネームがある場合はJPGファイルネームに置換して上書き | |
575 | + if (Result.IndexOf(SplitMediaFileName) >= 0) | |
576 | + { | |
577 | + //Log.Put(Result); | |
578 | + Result = Result.Replace(SplitMediaFileName, SplitNewMediaFileName); | |
579 | + //上書モードでリレーションファイルを開く | |
580 | + using (StreamWriter Writer = new StreamWriter(RelsFileName, false, Encoding.GetEncoding("shift-jis"))) | |
581 | + { | |
582 | + // リレーションファイル上書き | |
583 | + Writer.Write(Result); | |
584 | + //Log.Put(Result); | |
585 | + } | |
586 | + } | |
587 | + } | |
588 | + } | |
589 | + } | |
590 | + | |
591 | + if (JPGcount == 0) | |
592 | + { | |
593 | + Log.Put("JPG化すべきデータはありませんでした。"); | |
594 | + Log.Put("There is no image data to be converted to JPG."); | |
595 | + return; | |
596 | + } | |
597 | + | |
598 | + // ExtractPath + "\[Content_Types].xml の中に拡張子jpegを追記する | |
599 | + Result = String.Empty; | |
600 | + using (StreamReader Reader = new StreamReader(CurrentTypesFileName, Encoding.GetEncoding("shift-jis"))) | |
601 | + { | |
602 | + Result = Reader.ReadToEnd(); | |
603 | + } | |
604 | + //追加する文字列 <Default Extension="jpeg" ContentType="application/jpeg"/> | |
605 | + if (Result.ToLower().IndexOf("default extension=\"jpeg\"") >= 0) | |
606 | + { | |
607 | + //すでに拡張子jpegが登録されているので変更不要 | |
608 | + } | |
609 | + else | |
610 | + { | |
611 | + Result = Result.Replace( | |
612 | + "<Default Extension=\"xml\" ContentType=\"application/xml\"/>", | |
613 | + "<Default Extension=\"xml\" ContentType=\"application/xml\"/><Default Extension=\"jpeg\" ContentType=\"application/jpeg\"/>"); | |
614 | + //上書モードでShift-JISファイルを開く | |
615 | + using (StreamWriter Writer = new System.IO.StreamWriter(CurrentTypesFileName, false, Encoding.GetEncoding("shift-jis"))) | |
616 | + { | |
617 | + Writer.Write(Result); | |
618 | + //Log.Put(Result); | |
619 | + } | |
620 | + } | |
621 | + | |
622 | + // 再圧縮する前に、JPEG化まえのZIP書庫を削除する | |
623 | + File.Delete(ZipFileName); | |
624 | + | |
625 | + // ZIP書庫を作成する サイズ優先 | |
626 | + //ZipFile.CreateFromDirectory(ExtractPath, ZipFileName, CompressionLevel.Optimal, false, Encoding.GetEncoding("shift_jis")); | |
627 | + // ZIP書庫を作成する 処理速度優先 | |
628 | + ZipFile.CreateFromDirectory(ExtractPath, ZipFileName, CompressionLevel.Fastest, false, Encoding.GetEncoding("shift_jis")); | |
629 | + | |
630 | + // 圧縮前の office2007 ファイルをリネームする 例 aaaa.xlsx -> aaaa(0).xlsx | |
631 | + for (int i = 0; ; i++) | |
632 | + { | |
633 | + // リネームするファイル名 | |
634 | + string NewOrgFileName | |
635 | + = OrgFileName.Substring(0, OrgFileName.Length - 5) + "(" + i.ToString() + ")" + OrgFileName.Substring(OrgFileName.Length - 5); | |
636 | + | |
637 | + if (i >= 10000) | |
638 | + { | |
639 | + File.Delete(NewOrgFileName); | |
640 | + } | |
641 | + | |
642 | + if (File.Exists(NewOrgFileName) == true) | |
643 | + { | |
644 | + // ファイルの存在確認を行い、すでに存在すれば、リトライ | |
645 | + continue; | |
646 | + } | |
647 | + else | |
648 | + { | |
649 | + // リネーム処理して終了 | |
650 | + File.Move(OrgFileName, NewOrgFileName); | |
651 | + break; | |
652 | + } | |
653 | + } | |
654 | + | |
655 | + // 一時ZIPファイルネームをもとのoffice2007ファイルネームにする。 | |
656 | + File.Move(ZipFileName, OrgFileName); | |
657 | + | |
658 | + //! officeで保存しなおす | |
659 | + FileExtension = OrgFileName.Substring(OrgFileName.Length - 5).ToLower(); | |
660 | + if ((FileExtension == ".xlsx") || | |
661 | + (FileExtension == ".xlsm")) | |
662 | + { | |
663 | + try | |
664 | + { | |
665 | + var xls = new Microsoft.Office.Interop.Excel.Application(); | |
666 | + xls.Visible = false; | |
667 | + try | |
668 | + { | |
669 | + //開いて保存して終了するだけ | |
670 | + var book = xls.Workbooks.Open(OrgFileName); | |
671 | + book.Save(); | |
672 | + book.Close(); | |
673 | + } | |
674 | + catch | |
675 | + { | |
676 | + } | |
677 | + xls.Quit(); | |
678 | + } | |
679 | + catch | |
680 | + { | |
681 | + } | |
682 | + } | |
683 | + if ((FileExtension == "docx") || | |
684 | + (FileExtension == ".docm")) | |
685 | + { | |
686 | + try | |
687 | + { | |
688 | + var word = new Microsoft.Office.Interop.Word.Application(); | |
689 | + word.Visible = false; | |
690 | + try | |
691 | + { | |
692 | + //開いて保存して終了するだけ | |
693 | + var doc = word.Documents.Open(OrgFileName); | |
694 | + doc.Save(); | |
695 | + doc.Close(); | |
696 | + } | |
697 | + catch | |
698 | + { | |
699 | + } | |
700 | + word.Quit(); | |
701 | + } | |
702 | + catch | |
703 | + { | |
704 | + } | |
705 | + } | |
706 | + if ((FileExtension == "pptx") || | |
707 | + (FileExtension == ".pptm")) | |
708 | + { | |
709 | + try | |
710 | + { | |
711 | + var powerpoint = new Microsoft.Office.Interop.PowerPoint.Application(); | |
712 | + powerpoint.Visible = Microsoft.Office.Core.MsoTriState.msoFalse; | |
713 | + try | |
714 | + { | |
715 | + //開いて保存して終了するだけ | |
716 | + var ppt = powerpoint.Presentations.Open(OrgFileName); | |
717 | + ppt.Save(); | |
718 | + ppt.Close(); | |
719 | + } | |
720 | + catch | |
721 | + { | |
722 | + } | |
723 | + powerpoint.Quit(); | |
724 | + } | |
725 | + catch | |
726 | + { | |
727 | + } | |
728 | + } | |
729 | + | |
730 | + Log.Put("作業終了しました。"); | |
731 | + Log.Put("It is finished."); | |
732 | + } | |
733 | + catch (Exception ex) | |
734 | + { | |
735 | + Log.Put("Error:Main_Process():ex.Message\r\n" + ex.Message); | |
736 | + Log.Put("Error:CleanUp():ex.StacTrace\r\n" + ex.StackTrace); | |
737 | + } | |
738 | + finally | |
739 | + { | |
740 | + CleanUp(); | |
741 | + } | |
742 | + } | |
743 | + } | |
744 | +} | |
\ No newline at end of file |
@@ -0,0 +1,71 @@ | ||
1 | +<?xml version="1.0" encoding="utf-8"?> | |
2 | +<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> | |
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 | + <!-- UAC マニフェスト オプション | |
8 | + Windows のユーザー アカウント制御のレベルを変更するには、 | |
9 | + requestedExecutionLevel ノードを以下のいずれかで置換します。 | |
10 | + | |
11 | + <requestedExecutionLevel level="asInvoker" uiAccess="false" /> | |
12 | + <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> | |
13 | + <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> | |
14 | + | |
15 | + requestedExecutionLevel 要素を指定すると、ファイルおよびレジストリの仮想化が無効にされます。 | |
16 | + アプリケーションが下位互換性を保つためにこの仮想化を要求する場合、この要素を | |
17 | + 削除します。 | |
18 | + --> | |
19 | + <requestedExecutionLevel level="asInvoker" uiAccess="false" /> | |
20 | + </requestedPrivileges> | |
21 | + </security> | |
22 | + </trustInfo> | |
23 | + | |
24 | + <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> | |
25 | + <application> | |
26 | + <!-- このアプリケーションがテストされ、動作するよう設計された Windows バージョンの | |
27 | + 一覧。適切な要素をコメント解除すると、最も互換性のある環境を Windows が | |
28 | + 自動的に選択します。--> | |
29 | + | |
30 | + <!-- Windows Vista --> | |
31 | + <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />--> | |
32 | + | |
33 | + <!-- Windows 7 --> | |
34 | + <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />--> | |
35 | + | |
36 | + <!-- Windows 8 --> | |
37 | + <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />--> | |
38 | + | |
39 | + <!-- Windows 8.1 --> | |
40 | + <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />--> | |
41 | + | |
42 | + <!-- Windows 10 --> | |
43 | + <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />--> | |
44 | + </application> | |
45 | + </compatibility> | |
46 | + | |
47 | + <!-- アプリケーションが DPI 対応であり、それ以上の DPI で Windows によって自動的にスケーリングされないことを | |
48 | + 示します。Windows Presentation Foundation (WPF) アプリケーションは自動的に DPI に対応し、オプトインする必要は | |
49 | + ありません。さらに、この設定にオプトインする .NET Framework 4.6 を対象とする Windows Forms アプリケーションは、 | |
50 | + app.config ファイルで 'EnableWindowsFormsHighDpiAutoResizing' 設定を 'true' に設定する必要があります。--> | |
51 | + <application xmlns="urn:schemas-microsoft-com:asm.v3"> | |
52 | + <windowsSettings> | |
53 | + <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">per monitor</dpiAware> | |
54 | + </windowsSettings> | |
55 | + </application> | |
56 | + | |
57 | + <!-- Windows のコモン コントロールとダイアログのテーマを有効にします (Windows XP 以降) --> | |
58 | + <!-- | |
59 | + <dependency> | |
60 | + <dependentAssembly> | |
61 | + <assemblyIdentity | |
62 | + type="win32" | |
63 | + name="Microsoft.Windows.Common-Controls" | |
64 | + version="6.0.0.0" | |
65 | + processorArchitecture="*" | |
66 | + publicKeyToken="6595b64144ccf1df" | |
67 | + language="*" /> | |
68 | + </dependentAssembly> | |
69 | + </dependency> | |
70 | + --> | |
71 | +</assembly> | |
\ No newline at end of file |
@@ -0,0 +1,149 @@ | ||
1 | +using System.Windows.Forms; | |
2 | + | |
3 | +/// <summary> | |
4 | +/// ログ処理 | |
5 | +/// </summary> | |
6 | +namespace OfficeImageReducer | |
7 | +{ | |
8 | + /// <summary> | |
9 | + /// ログを管理するクラス | |
10 | + /// </summary> | |
11 | + public class ClassLog | |
12 | + { | |
13 | + /// <summary>ログを保存するフルパス付ファイル名</summary> | |
14 | + private string LogFileName; | |
15 | + | |
16 | + /// <summary>ファイル保存用のログ文字列を確保する</summary> | |
17 | + private string _ShadowBuf; | |
18 | + | |
19 | + /// <summary>ログ表示用テキストボックス</summary> | |
20 | + private TextBox _LogTextBox; | |
21 | + | |
22 | + /// <summary> | |
23 | + /// コンストラクタ | |
24 | + /// </summary> | |
25 | + /// <param name="LogTextBox">LogTextBox ログ表示用のテキストボックス</param> | |
26 | + public ClassLog(TextBox LogTextBox) | |
27 | + { | |
28 | + _LogTextBox = LogTextBox; | |
29 | + _LogTextBox.Text = ""; | |
30 | + _ShadowBuf = ""; | |
31 | + LogFileName = ClassMyCommon.AppPath() + ClassMyCommon.TITLE | |
32 | + + "Log" + System.DateTime.Now.ToString("yyMMdd") + ".txt"; | |
33 | + } | |
34 | + | |
35 | + /// <summary> | |
36 | + /// 他のスレッドからコールする為のデリゲート | |
37 | + /// </summary> | |
38 | + /// <param name="stradd">ログへ追加する文字列</param> | |
39 | + private delegate void Add_Callback(string stradd); | |
40 | + | |
41 | + /// <summary> | |
42 | + /// ログに文字列を追加する ログの表示は更新スクロールされない | |
43 | + /// </summary> | |
44 | + /// <param name="stradd">ログへ追加する文字列</param> | |
45 | + public void Add(string stradd) | |
46 | + { | |
47 | + if (stradd == "") | |
48 | + { | |
49 | + //! 文字列がカラなら即終了 | |
50 | + return; | |
51 | + } | |
52 | + | |
53 | + if (_LogTextBox.InvokeRequired) | |
54 | + { | |
55 | + // 別スレッドから呼び出された場合デリゲートからコールバックさせる | |
56 | + _LogTextBox.Invoke(new Add_Callback(Add), stradd); | |
57 | + return; | |
58 | + } | |
59 | + | |
60 | + //! 表示されている古いログは削除する | |
61 | + DeleteOld(); | |
62 | + | |
63 | + // タイムスタンプ文字列を生成 | |
64 | + string TimeStamp = System.DateTime.Now.ToString("MM/dd HH:mm:ss : "); | |
65 | + // ログ追加文字列の先頭にタイムスタンプを追加 | |
66 | + stradd = TimeStamp + stradd; | |
67 | + | |
68 | + // ログ追加文字列の最後尾に "\r\n" があった場合は、いったん削除する | |
69 | + if (stradd.Substring(stradd.Length - "\r\n".Length, "\r\n".Length) == "\r\n") | |
70 | + { | |
71 | + stradd = stradd.Substring(0, stradd.Length - "\r\n".Length); | |
72 | + } | |
73 | + | |
74 | + // ログ追加文字列の中に "\r\n" があった場合は、"\r\n+タイムスタンプ" に置換する | |
75 | + stradd = stradd.Replace("\r\n", "\r\n" + TimeStamp); | |
76 | + | |
77 | + // ログ追加文字列の最後尾に "\r\n" を追加 | |
78 | + stradd += "\r\n"; | |
79 | + | |
80 | + // 加工したログ追加文字列を保存用文字列とテキストボックスへ追加 | |
81 | + _LogTextBox.Text += stradd; | |
82 | + _ShadowBuf += stradd; | |
83 | + } | |
84 | + | |
85 | + /// <summary> | |
86 | + /// 他のスレッドからコールする為のデリゲート | |
87 | + /// </summary> | |
88 | + /// <param name="stradd">ログへ追加する文字列</param> | |
89 | + private delegate void Put_Callback(string stradd); | |
90 | + | |
91 | + /// <summary> | |
92 | + /// ログに文字列を追加しログ表示を最下行へ強制スクロールする | |
93 | + /// </summary> | |
94 | + /// <param name="stradd">ログへ追加する文字列</param> | |
95 | + public void Put(string stradd) | |
96 | + { | |
97 | + if (_LogTextBox.InvokeRequired) | |
98 | + { | |
99 | + // 別スレッドから呼び出された場合デリゲートからコールバックさせる | |
100 | + _LogTextBox.Invoke(new Put_Callback(Put), stradd); | |
101 | + return; | |
102 | + } | |
103 | + | |
104 | + // ログ追加 | |
105 | + Add(stradd); | |
106 | + | |
107 | + // ログ表示を最下行へスクロールする。 | |
108 | + _LogTextBox.SelectionStart = _LogTextBox.Text.Length; | |
109 | + _LogTextBox.ScrollToCaret(); | |
110 | + } | |
111 | + | |
112 | + /// <summary> | |
113 | + /// ログをファイルに保存 | |
114 | + /// </summary> | |
115 | + public void Save() | |
116 | + { | |
117 | +#if false | |
118 | + using (StreamWriter sw = new StreamWriter( | |
119 | + LogFileName, | |
120 | + true, | |
121 | + System.Text.Encoding.GetEncoding("shift-jis"))) | |
122 | + { | |
123 | + // ファイルへの書き込み | |
124 | + sw.Write(_ShadowBuf); | |
125 | + } | |
126 | +#endif | |
127 | + } | |
128 | + | |
129 | + /// <summary> | |
130 | + /// ログ表示部から古いログを削除 削除されるのは表示部のみ。保存用文字列からは削除しない。 | |
131 | + /// </summary> | |
132 | + private void DeleteOld() | |
133 | + { | |
134 | + //! ログ表示量が MaxLength-1024 より大きくなったら破棄する | |
135 | + if (_LogTextBox.Text.Length > (_LogTextBox.MaxLength - 1024)) | |
136 | + { | |
137 | + _LogTextBox.Text = _LogTextBox.Text.Substring(_LogTextBox.MaxLength / 2); | |
138 | + } | |
139 | + } | |
140 | + | |
141 | + /// <summary> | |
142 | + /// ログ表示部からログをすべて削除 削除されるのは表示部のみ。ファイル保存用文字列からは削除しない。 | |
143 | + /// </summary> | |
144 | + public void Clear() | |
145 | + { | |
146 | + _LogTextBox.Text = ""; | |
147 | + } | |
148 | + } | |
149 | +} | |
\ No newline at end of file |
@@ -0,0 +1,116 @@ | ||
1 | +namespace OfficeImageReducer | |
2 | +{ | |
3 | + partial class FormMain | |
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(FormMain)); | |
32 | + this.textBox1 = new System.Windows.Forms.TextBox(); | |
33 | + this.button1 = new System.Windows.Forms.Button(); | |
34 | + this.button2 = new System.Windows.Forms.Button(); | |
35 | + this.button3 = new System.Windows.Forms.Button(); | |
36 | + this.SuspendLayout(); | |
37 | + // | |
38 | + // textBox1 | |
39 | + // | |
40 | + this.textBox1.AllowDrop = true; | |
41 | + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | |
42 | + | System.Windows.Forms.AnchorStyles.Left) | |
43 | + | System.Windows.Forms.AnchorStyles.Right))); | |
44 | + this.textBox1.Location = new System.Drawing.Point(12, 12); | |
45 | + this.textBox1.Multiline = true; | |
46 | + this.textBox1.Name = "textBox1"; | |
47 | + this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Both; | |
48 | + this.textBox1.Size = new System.Drawing.Size(510, 207); | |
49 | + this.textBox1.TabIndex = 0; | |
50 | + this.textBox1.WordWrap = false; | |
51 | + this.textBox1.DragDrop += new System.Windows.Forms.DragEventHandler(this.textBox1_DragDrop); | |
52 | + this.textBox1.DragEnter += new System.Windows.Forms.DragEventHandler(this.textBox1_DragEnter); | |
53 | + // | |
54 | + // button1 | |
55 | + // | |
56 | + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); | |
57 | + this.button1.Location = new System.Drawing.Point(12, 225); | |
58 | + this.button1.Name = "button1"; | |
59 | + this.button1.Size = new System.Drawing.Size(104, 27); | |
60 | + this.button1.TabIndex = 1; | |
61 | + this.button1.Text = "About"; | |
62 | + this.button1.UseVisualStyleBackColor = true; | |
63 | + this.button1.Click += new System.EventHandler(this.button1_Click); | |
64 | + // | |
65 | + // button2 | |
66 | + // | |
67 | + this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | |
68 | + | System.Windows.Forms.AnchorStyles.Right))); | |
69 | + this.button2.Location = new System.Drawing.Point(122, 225); | |
70 | + this.button2.Name = "button2"; | |
71 | + this.button2.Size = new System.Drawing.Size(279, 27); | |
72 | + this.button2.TabIndex = 2; | |
73 | + this.button2.Text = "Clear Log"; | |
74 | + this.button2.UseVisualStyleBackColor = true; | |
75 | + this.button2.Click += new System.EventHandler(this.button2_Click); | |
76 | + // | |
77 | + // button3 | |
78 | + // | |
79 | + this.button3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); | |
80 | + this.button3.Location = new System.Drawing.Point(407, 225); | |
81 | + this.button3.Name = "button3"; | |
82 | + this.button3.Size = new System.Drawing.Size(115, 27); | |
83 | + this.button3.TabIndex = 3; | |
84 | + this.button3.Text = "Quit"; | |
85 | + this.button3.UseVisualStyleBackColor = true; | |
86 | + this.button3.Click += new System.EventHandler(this.button3_Click); | |
87 | + // | |
88 | + // FormMain | |
89 | + // | |
90 | + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); | |
91 | + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |
92 | + this.ClientSize = new System.Drawing.Size(534, 261); | |
93 | + this.Controls.Add(this.button3); | |
94 | + this.Controls.Add(this.button2); | |
95 | + this.Controls.Add(this.button1); | |
96 | + this.Controls.Add(this.textBox1); | |
97 | + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); | |
98 | + this.MinimumSize = new System.Drawing.Size(400, 150); | |
99 | + this.Name = "FormMain"; | |
100 | + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; | |
101 | + this.Text = "FormMain"; | |
102 | + this.Load += new System.EventHandler(this.FormMain_Load); | |
103 | + this.ResumeLayout(false); | |
104 | + this.PerformLayout(); | |
105 | + | |
106 | + } | |
107 | + | |
108 | + #endregion | |
109 | + | |
110 | + private System.Windows.Forms.TextBox textBox1; | |
111 | + private System.Windows.Forms.Button button1; | |
112 | + private System.Windows.Forms.Button button2; | |
113 | + private System.Windows.Forms.Button button3; | |
114 | + } | |
115 | +} | |
116 | + |
@@ -0,0 +1,36 @@ | ||
1 | +using System.Reflection; | |
2 | +using System.Runtime.CompilerServices; | |
3 | +using System.Runtime.InteropServices; | |
4 | + | |
5 | +// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。 | |
6 | +// アセンブリに関連付けられている情報を変更するには、 | |
7 | +// これらの属性値を変更してください。 | |
8 | +[assembly: AssemblyTitle("")] | |
9 | +[assembly: AssemblyDescription("")] | |
10 | +[assembly: AssemblyConfiguration("")] | |
11 | +[assembly: AssemblyCompany("")] | |
12 | +[assembly: AssemblyProduct("")] | |
13 | +[assembly: AssemblyCopyright("")] | |
14 | +[assembly: AssemblyTrademark("")] | |
15 | +[assembly: AssemblyCulture("")] | |
16 | + | |
17 | +// ComVisible を false に設定すると、このアセンブリ内の型は COM コンポーネントから | |
18 | +// 参照できなくなります。COM からこのアセンブリ内の型にアクセスする必要がある場合は、 | |
19 | +// その型の ComVisible 属性を true に設定してください。 | |
20 | +[assembly: ComVisible(false)] | |
21 | + | |
22 | +// このプロジェクトが COM に公開される場合、次の GUID が typelib の ID になります | |
23 | +[assembly: Guid("190d3215-8be6-429c-be2a-8883381105a2")] | |
24 | + | |
25 | +// アセンブリのバージョン情報は次の 4 つの値で構成されています: | |
26 | +// | |
27 | +// メジャー バージョン | |
28 | +// マイナー バージョン | |
29 | +// ビルド番号 | |
30 | +// Revision | |
31 | +// | |
32 | +// すべての値を指定するか、次を使用してビルド番号とリビジョン番号を既定に設定できます | |
33 | +// 既定値にすることができます: | |
34 | +// [assembly: AssemblyVersion("1.0.*")] | |
35 | +[assembly: AssemblyVersion("1.0.0.0")] | |
36 | +[assembly: AssemblyFileVersion("1.0.0.0")] |
@@ -0,0 +1,63 @@ | ||
1 | +//------------------------------------------------------------------------------ | |
2 | +// <auto-generated> | |
3 | +// このコードはツールによって生成されました。 | |
4 | +// ランタイム バージョン:4.0.30319.42000 | |
5 | +// | |
6 | +// このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 | |
7 | +// コードが再生成されるときに損失したりします。 | |
8 | +// </auto-generated> | |
9 | +//------------------------------------------------------------------------------ | |
10 | + | |
11 | +namespace OfficeImageReducer.Properties { | |
12 | + using System; | |
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", "15.0.0.0")] | |
23 | + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | |
24 | + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |
25 | + internal class Resources { | |
26 | + | |
27 | + private static global::System.Resources.ResourceManager resourceMan; | |
28 | + | |
29 | + private static global::System.Globalization.CultureInfo resourceCulture; | |
30 | + | |
31 | + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] | |
32 | + internal Resources() { | |
33 | + } | |
34 | + | |
35 | + /// <summary> | |
36 | + /// このクラスで使用されているキャッシュされた ResourceManager インスタンスを返します。 | |
37 | + /// </summary> | |
38 | + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |
39 | + internal static global::System.Resources.ResourceManager ResourceManager { | |
40 | + get { | |
41 | + if (object.ReferenceEquals(resourceMan, null)) { | |
42 | + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OfficeImageReducer.Properties.Resources", typeof(Resources).Assembly); | |
43 | + resourceMan = temp; | |
44 | + } | |
45 | + return resourceMan; | |
46 | + } | |
47 | + } | |
48 | + | |
49 | + /// <summary> | |
50 | + /// 厳密に型指定されたこのリソース クラスを使用して、すべての検索リソースに対し、 | |
51 | + /// 現在のスレッドの CurrentUICulture プロパティをオーバーライドします。 | |
52 | + /// </summary> | |
53 | + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |
54 | + internal static global::System.Globalization.CultureInfo Culture { | |
55 | + get { | |
56 | + return resourceCulture; | |
57 | + } | |
58 | + set { | |
59 | + resourceCulture = value; | |
60 | + } | |
61 | + } | |
62 | + } | |
63 | +} |
@@ -0,0 +1,26 @@ | ||
1 | +//------------------------------------------------------------------------------ | |
2 | +// <auto-generated> | |
3 | +// このコードはツールによって生成されました。 | |
4 | +// ランタイム バージョン:4.0.30319.42000 | |
5 | +// | |
6 | +// このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 | |
7 | +// コードが再生成されるときに損失したりします。 | |
8 | +// </auto-generated> | |
9 | +//------------------------------------------------------------------------------ | |
10 | + | |
11 | +namespace OfficeImageReducer.Properties { | |
12 | + | |
13 | + | |
14 | + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |
15 | + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.3.0.0")] | |
16 | + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { | |
17 | + | |
18 | + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); | |
19 | + | |
20 | + public static Settings Default { | |
21 | + get { | |
22 | + return defaultInstance; | |
23 | + } | |
24 | + } | |
25 | + } | |
26 | +} |
@@ -0,0 +1,22 @@ | ||
1 | +using System; | |
2 | +using System.Collections.Generic; | |
3 | +using System.Linq; | |
4 | +using System.Threading.Tasks; | |
5 | +using System.Windows.Forms; | |
6 | + | |
7 | +namespace OfficeImageReducer | |
8 | +{ | |
9 | + static class Program | |
10 | + { | |
11 | + /// <summary> | |
12 | + /// アプリケーションのメイン エントリ ポイントです。 | |
13 | + /// </summary> | |
14 | + [STAThread] | |
15 | + static void Main() | |
16 | + { | |
17 | + Application.EnableVisualStyles(); | |
18 | + Application.SetCompatibleTextRenderingDefault(false); | |
19 | + Application.Run(new FormMain()); | |
20 | + } | |
21 | + } | |
22 | +} |
@@ -0,0 +1,1526 @@ | ||
1 | +{ | |
2 | + "runtimeTarget": { | |
3 | + "name": ".NETCoreApp,Version=v2.1", | |
4 | + "signature": "c9ab0eeb9f8a08d1496cc2f36b6d9b2926228585" | |
5 | + }, | |
6 | + "compilationOptions": {}, | |
7 | + "targets": { | |
8 | + ".NETCoreApp,Version=v2.1": { | |
9 | + "UnitTestProject1/1.0.0": { | |
10 | + "dependencies": { | |
11 | + "MSTest.TestAdapter": "1.3.2", | |
12 | + "MSTest.TestFramework": "1.3.2", | |
13 | + "Microsoft.NET.Test.Sdk": "15.8.0", | |
14 | + "OfficeImageReducer": "1.0.0" | |
15 | + }, | |
16 | + "runtime": { | |
17 | + "UnitTestProject1.dll": {} | |
18 | + } | |
19 | + }, | |
20 | + "Microsoft.CodeCoverage/15.8.0": { | |
21 | + "runtime": { | |
22 | + "lib/netcoreapp1.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll": { | |
23 | + "assemblyVersion": "15.0.0.0", | |
24 | + "fileVersion": "15.0.27718.3008" | |
25 | + } | |
26 | + } | |
27 | + }, | |
28 | + "Microsoft.CSharp/4.0.1": { | |
29 | + "dependencies": { | |
30 | + "System.Collections": "4.3.0", | |
31 | + "System.Diagnostics.Debug": "4.3.0", | |
32 | + "System.Dynamic.Runtime": "4.0.11", | |
33 | + "System.Globalization": "4.3.0", | |
34 | + "System.Linq": "4.1.0", | |
35 | + "System.Linq.Expressions": "4.1.0", | |
36 | + "System.ObjectModel": "4.0.12", | |
37 | + "System.Reflection": "4.3.0", | |
38 | + "System.Reflection.Extensions": "4.0.1", | |
39 | + "System.Reflection.Primitives": "4.3.0", | |
40 | + "System.Reflection.TypeExtensions": "4.1.0", | |
41 | + "System.Resources.ResourceManager": "4.3.0", | |
42 | + "System.Runtime": "4.3.0", | |
43 | + "System.Runtime.Extensions": "4.3.0", | |
44 | + "System.Runtime.InteropServices": "4.1.0", | |
45 | + "System.Threading": "4.3.0" | |
46 | + } | |
47 | + }, | |
48 | + "Microsoft.DotNet.PlatformAbstractions/1.0.3": { | |
49 | + "dependencies": { | |
50 | + "System.AppContext": "4.1.0", | |
51 | + "System.Collections": "4.3.0", | |
52 | + "System.IO": "4.3.0", | |
53 | + "System.IO.FileSystem": "4.0.1", | |
54 | + "System.Reflection.TypeExtensions": "4.1.0", | |
55 | + "System.Runtime.Extensions": "4.3.0", | |
56 | + "System.Runtime.InteropServices": "4.1.0", | |
57 | + "System.Runtime.InteropServices.RuntimeInformation": "4.0.0" | |
58 | + }, | |
59 | + "runtime": { | |
60 | + "lib/netstandard1.3/Microsoft.DotNet.PlatformAbstractions.dll": { | |
61 | + "assemblyVersion": "1.0.1.0", | |
62 | + "fileVersion": "1.0.1.0" | |
63 | + } | |
64 | + } | |
65 | + }, | |
66 | + "Microsoft.Extensions.DependencyModel/1.0.3": { | |
67 | + "dependencies": { | |
68 | + "Microsoft.DotNet.PlatformAbstractions": "1.0.3", | |
69 | + "Newtonsoft.Json": "9.0.1", | |
70 | + "System.Diagnostics.Debug": "4.3.0", | |
71 | + "System.Dynamic.Runtime": "4.0.11", | |
72 | + "System.Linq": "4.1.0" | |
73 | + }, | |
74 | + "runtime": { | |
75 | + "lib/netstandard1.6/Microsoft.Extensions.DependencyModel.dll": { | |
76 | + "assemblyVersion": "1.0.1.0", | |
77 | + "fileVersion": "1.0.1.0" | |
78 | + } | |
79 | + } | |
80 | + }, | |
81 | + "Microsoft.NET.Test.Sdk/15.8.0": { | |
82 | + "dependencies": { | |
83 | + "Microsoft.CodeCoverage": "15.8.0", | |
84 | + "Microsoft.TestPlatform.TestHost": "15.8.0" | |
85 | + } | |
86 | + }, | |
87 | + "Microsoft.TestPlatform.ObjectModel/15.8.0": { | |
88 | + "dependencies": { | |
89 | + "System.ComponentModel.EventBasedAsync": "4.0.11", | |
90 | + "System.ComponentModel.TypeConverter": "4.1.0", | |
91 | + "System.Diagnostics.Process": "4.1.0", | |
92 | + "System.Diagnostics.TextWriterTraceListener": "4.3.0", | |
93 | + "System.Diagnostics.TraceSource": "4.3.0", | |
94 | + "System.Reflection.Metadata": "1.3.0", | |
95 | + "System.Reflection.TypeExtensions": "4.1.0", | |
96 | + "System.Runtime.InteropServices.RuntimeInformation": "4.0.0", | |
97 | + "System.Runtime.Loader": "4.0.0", | |
98 | + "System.Runtime.Serialization.Json": "4.0.2", | |
99 | + "System.Runtime.Serialization.Primitives": "4.1.1", | |
100 | + "System.Threading.Thread": "4.0.0", | |
101 | + "System.Xml.XPath.XmlDocument": "4.0.1" | |
102 | + }, | |
103 | + "runtime": { | |
104 | + "lib/netstandard1.5/Microsoft.TestPlatform.CoreUtilities.dll": { | |
105 | + "assemblyVersion": "15.0.0.0", | |
106 | + "fileVersion": "15.0.0.0" | |
107 | + }, | |
108 | + "lib/netstandard1.5/Microsoft.TestPlatform.PlatformAbstractions.dll": { | |
109 | + "assemblyVersion": "15.0.0.0", | |
110 | + "fileVersion": "15.0.0.0" | |
111 | + }, | |
112 | + "lib/netstandard1.5/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": { | |
113 | + "assemblyVersion": "15.0.0.0", | |
114 | + "fileVersion": "15.0.0.0" | |
115 | + } | |
116 | + }, | |
117 | + "resources": { | |
118 | + "lib/netstandard1.5/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": { | |
119 | + "locale": "cs" | |
120 | + }, | |
121 | + "lib/netstandard1.5/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { | |
122 | + "locale": "cs" | |
123 | + }, | |
124 | + "lib/netstandard1.5/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": { | |
125 | + "locale": "de" | |
126 | + }, | |
127 | + "lib/netstandard1.5/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { | |
128 | + "locale": "de" | |
129 | + }, | |
130 | + "lib/netstandard1.5/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": { | |
131 | + "locale": "es" | |
132 | + }, | |
133 | + "lib/netstandard1.5/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { | |
134 | + "locale": "es" | |
135 | + }, | |
136 | + "lib/netstandard1.5/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { | |
137 | + "locale": "fr" | |
138 | + }, | |
139 | + "lib/netstandard1.5/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { | |
140 | + "locale": "fr" | |
141 | + }, | |
142 | + "lib/netstandard1.5/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": { | |
143 | + "locale": "it" | |
144 | + }, | |
145 | + "lib/netstandard1.5/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { | |
146 | + "locale": "it" | |
147 | + }, | |
148 | + "lib/netstandard1.5/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": { | |
149 | + "locale": "ja" | |
150 | + }, | |
151 | + "lib/netstandard1.5/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { | |
152 | + "locale": "ja" | |
153 | + }, | |
154 | + "lib/netstandard1.5/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": { | |
155 | + "locale": "ko" | |
156 | + }, | |
157 | + "lib/netstandard1.5/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { | |
158 | + "locale": "ko" | |
159 | + }, | |
160 | + "lib/netstandard1.5/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": { | |
161 | + "locale": "pl" | |
162 | + }, | |
163 | + "lib/netstandard1.5/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { | |
164 | + "locale": "pl" | |
165 | + }, | |
166 | + "lib/netstandard1.5/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": { | |
167 | + "locale": "pt-BR" | |
168 | + }, | |
169 | + "lib/netstandard1.5/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { | |
170 | + "locale": "pt-BR" | |
171 | + }, | |
172 | + "lib/netstandard1.5/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": { | |
173 | + "locale": "ru" | |
174 | + }, | |
175 | + "lib/netstandard1.5/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { | |
176 | + "locale": "ru" | |
177 | + }, | |
178 | + "lib/netstandard1.5/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { | |
179 | + "locale": "tr" | |
180 | + }, | |
181 | + "lib/netstandard1.5/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { | |
182 | + "locale": "tr" | |
183 | + }, | |
184 | + "lib/netstandard1.5/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": { | |
185 | + "locale": "zh-Hans" | |
186 | + }, | |
187 | + "lib/netstandard1.5/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { | |
188 | + "locale": "zh-Hans" | |
189 | + }, | |
190 | + "lib/netstandard1.5/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": { | |
191 | + "locale": "zh-Hant" | |
192 | + }, | |
193 | + "lib/netstandard1.5/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { | |
194 | + "locale": "zh-Hant" | |
195 | + } | |
196 | + } | |
197 | + }, | |
198 | + "Microsoft.TestPlatform.TestHost/15.8.0": { | |
199 | + "dependencies": { | |
200 | + "Microsoft.Extensions.DependencyModel": "1.0.3", | |
201 | + "Microsoft.TestPlatform.ObjectModel": "15.8.0", | |
202 | + "Newtonsoft.Json": "9.0.1" | |
203 | + }, | |
204 | + "runtime": { | |
205 | + "lib/netstandard1.5/Microsoft.TestPlatform.CommunicationUtilities.dll": { | |
206 | + "assemblyVersion": "15.0.0.0", | |
207 | + "fileVersion": "15.0.0.0" | |
208 | + }, | |
209 | + "lib/netstandard1.5/Microsoft.TestPlatform.CrossPlatEngine.dll": { | |
210 | + "assemblyVersion": "15.0.0.0", | |
211 | + "fileVersion": "15.0.0.0" | |
212 | + }, | |
213 | + "lib/netstandard1.5/Microsoft.VisualStudio.TestPlatform.Common.dll": { | |
214 | + "assemblyVersion": "15.0.0.0", | |
215 | + "fileVersion": "15.0.0.0" | |
216 | + }, | |
217 | + "lib/netstandard1.5/testhost.dll": { | |
218 | + "assemblyVersion": "15.0.0.0", | |
219 | + "fileVersion": "15.0.0.0" | |
220 | + } | |
221 | + }, | |
222 | + "resources": { | |
223 | + "lib/netstandard1.5/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { | |
224 | + "locale": "cs" | |
225 | + }, | |
226 | + "lib/netstandard1.5/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { | |
227 | + "locale": "cs" | |
228 | + }, | |
229 | + "lib/netstandard1.5/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { | |
230 | + "locale": "cs" | |
231 | + }, | |
232 | + "lib/netstandard1.5/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { | |
233 | + "locale": "de" | |
234 | + }, | |
235 | + "lib/netstandard1.5/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { | |
236 | + "locale": "de" | |
237 | + }, | |
238 | + "lib/netstandard1.5/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { | |
239 | + "locale": "de" | |
240 | + }, | |
241 | + "lib/netstandard1.5/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { | |
242 | + "locale": "es" | |
243 | + }, | |
244 | + "lib/netstandard1.5/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { | |
245 | + "locale": "es" | |
246 | + }, | |
247 | + "lib/netstandard1.5/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { | |
248 | + "locale": "es" | |
249 | + }, | |
250 | + "lib/netstandard1.5/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { | |
251 | + "locale": "fr" | |
252 | + }, | |
253 | + "lib/netstandard1.5/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { | |
254 | + "locale": "fr" | |
255 | + }, | |
256 | + "lib/netstandard1.5/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { | |
257 | + "locale": "fr" | |
258 | + }, | |
259 | + "lib/netstandard1.5/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { | |
260 | + "locale": "it" | |
261 | + }, | |
262 | + "lib/netstandard1.5/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { | |
263 | + "locale": "it" | |
264 | + }, | |
265 | + "lib/netstandard1.5/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { | |
266 | + "locale": "it" | |
267 | + }, | |
268 | + "lib/netstandard1.5/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { | |
269 | + "locale": "ja" | |
270 | + }, | |
271 | + "lib/netstandard1.5/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { | |
272 | + "locale": "ja" | |
273 | + }, | |
274 | + "lib/netstandard1.5/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { | |
275 | + "locale": "ja" | |
276 | + }, | |
277 | + "lib/netstandard1.5/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { | |
278 | + "locale": "ko" | |
279 | + }, | |
280 | + "lib/netstandard1.5/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { | |
281 | + "locale": "ko" | |
282 | + }, | |
283 | + "lib/netstandard1.5/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { | |
284 | + "locale": "ko" | |
285 | + }, | |
286 | + "lib/netstandard1.5/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { | |
287 | + "locale": "pl" | |
288 | + }, | |
289 | + "lib/netstandard1.5/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { | |
290 | + "locale": "pl" | |
291 | + }, | |
292 | + "lib/netstandard1.5/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { | |
293 | + "locale": "pl" | |
294 | + }, | |
295 | + "lib/netstandard1.5/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { | |
296 | + "locale": "pt-BR" | |
297 | + }, | |
298 | + "lib/netstandard1.5/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { | |
299 | + "locale": "pt-BR" | |
300 | + }, | |
301 | + "lib/netstandard1.5/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { | |
302 | + "locale": "pt-BR" | |
303 | + }, | |
304 | + "lib/netstandard1.5/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { | |
305 | + "locale": "ru" | |
306 | + }, | |
307 | + "lib/netstandard1.5/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { | |
308 | + "locale": "ru" | |
309 | + }, | |
310 | + "lib/netstandard1.5/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { | |
311 | + "locale": "ru" | |
312 | + }, | |
313 | + "lib/netstandard1.5/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { | |
314 | + "locale": "tr" | |
315 | + }, | |
316 | + "lib/netstandard1.5/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { | |
317 | + "locale": "tr" | |
318 | + }, | |
319 | + "lib/netstandard1.5/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { | |
320 | + "locale": "tr" | |
321 | + }, | |
322 | + "lib/netstandard1.5/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { | |
323 | + "locale": "zh-Hans" | |
324 | + }, | |
325 | + "lib/netstandard1.5/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { | |
326 | + "locale": "zh-Hans" | |
327 | + }, | |
328 | + "lib/netstandard1.5/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { | |
329 | + "locale": "zh-Hans" | |
330 | + }, | |
331 | + "lib/netstandard1.5/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { | |
332 | + "locale": "zh-Hant" | |
333 | + }, | |
334 | + "lib/netstandard1.5/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { | |
335 | + "locale": "zh-Hant" | |
336 | + }, | |
337 | + "lib/netstandard1.5/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { | |
338 | + "locale": "zh-Hant" | |
339 | + } | |
340 | + } | |
341 | + }, | |
342 | + "Microsoft.Win32.Primitives/4.0.1": { | |
343 | + "dependencies": { | |
344 | + "System.Runtime": "4.3.0" | |
345 | + } | |
346 | + }, | |
347 | + "Microsoft.Win32.Registry/4.0.0": { | |
348 | + "dependencies": { | |
349 | + "System.Collections": "4.3.0", | |
350 | + "System.Globalization": "4.3.0", | |
351 | + "System.Resources.ResourceManager": "4.3.0", | |
352 | + "System.Runtime": "4.3.0", | |
353 | + "System.Runtime.Extensions": "4.3.0", | |
354 | + "System.Runtime.Handles": "4.0.1", | |
355 | + "System.Runtime.InteropServices": "4.1.0" | |
356 | + }, | |
357 | + "runtimeTargets": { | |
358 | + "runtime/unix/lib/_._": { | |
359 | + "rid": "unix", | |
360 | + "assetType": "runtime" | |
361 | + }, | |
362 | + "runtime/win/lib/_._": { | |
363 | + "rid": "win", | |
364 | + "assetType": "runtime" | |
365 | + } | |
366 | + } | |
367 | + }, | |
368 | + "MSTest.TestAdapter/1.3.2": { | |
369 | + "dependencies": { | |
370 | + "System.Diagnostics.TextWriterTraceListener": "4.3.0" | |
371 | + } | |
372 | + }, | |
373 | + "MSTest.TestFramework/1.3.2": { | |
374 | + "runtime": { | |
375 | + "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll": { | |
376 | + "assemblyVersion": "14.0.0.0", | |
377 | + "fileVersion": "14.0.2505.1" | |
378 | + }, | |
379 | + "lib/netstandard1.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll": { | |
380 | + "assemblyVersion": "14.0.0.0", | |
381 | + "fileVersion": "14.0.2505.1" | |
382 | + } | |
383 | + } | |
384 | + }, | |
385 | + "Newtonsoft.Json/9.0.1": { | |
386 | + "dependencies": { | |
387 | + "Microsoft.CSharp": "4.0.1", | |
388 | + "System.Collections": "4.3.0", | |
389 | + "System.Diagnostics.Debug": "4.3.0", | |
390 | + "System.Dynamic.Runtime": "4.0.11", | |
391 | + "System.Globalization": "4.3.0", | |
392 | + "System.IO": "4.3.0", | |
393 | + "System.Linq": "4.1.0", | |
394 | + "System.Linq.Expressions": "4.1.0", | |
395 | + "System.ObjectModel": "4.0.12", | |
396 | + "System.Reflection": "4.3.0", | |
397 | + "System.Reflection.Extensions": "4.0.1", | |
398 | + "System.Resources.ResourceManager": "4.3.0", | |
399 | + "System.Runtime": "4.3.0", | |
400 | + "System.Runtime.Extensions": "4.3.0", | |
401 | + "System.Runtime.Serialization.Primitives": "4.1.1", | |
402 | + "System.Text.Encoding": "4.3.0", | |
403 | + "System.Text.Encoding.Extensions": "4.0.11", | |
404 | + "System.Text.RegularExpressions": "4.1.0", | |
405 | + "System.Threading": "4.3.0", | |
406 | + "System.Threading.Tasks": "4.3.0", | |
407 | + "System.Xml.ReaderWriter": "4.0.11", | |
408 | + "System.Xml.XDocument": "4.0.11" | |
409 | + }, | |
410 | + "runtime": { | |
411 | + "lib/netstandard1.0/Newtonsoft.Json.dll": { | |
412 | + "assemblyVersion": "9.0.0.0", | |
413 | + "fileVersion": "9.0.1.19813" | |
414 | + } | |
415 | + } | |
416 | + }, | |
417 | + "runtime.native.System/4.3.0": {}, | |
418 | + "System.AppContext/4.1.0": { | |
419 | + "dependencies": { | |
420 | + "System.Runtime": "4.3.0" | |
421 | + } | |
422 | + }, | |
423 | + "System.Collections/4.3.0": { | |
424 | + "dependencies": { | |
425 | + "System.Runtime": "4.3.0" | |
426 | + } | |
427 | + }, | |
428 | + "System.Collections.Concurrent/4.0.12": { | |
429 | + "dependencies": { | |
430 | + "System.Collections": "4.3.0", | |
431 | + "System.Diagnostics.Debug": "4.3.0", | |
432 | + "System.Diagnostics.Tracing": "4.1.0", | |
433 | + "System.Globalization": "4.3.0", | |
434 | + "System.Reflection": "4.3.0", | |
435 | + "System.Resources.ResourceManager": "4.3.0", | |
436 | + "System.Runtime": "4.3.0", | |
437 | + "System.Runtime.Extensions": "4.3.0", | |
438 | + "System.Threading": "4.3.0", | |
439 | + "System.Threading.Tasks": "4.3.0" | |
440 | + } | |
441 | + }, | |
442 | + "System.Collections.Immutable/1.2.0": { | |
443 | + "dependencies": { | |
444 | + "System.Collections": "4.3.0", | |
445 | + "System.Diagnostics.Debug": "4.3.0", | |
446 | + "System.Globalization": "4.3.0", | |
447 | + "System.Linq": "4.1.0", | |
448 | + "System.Resources.ResourceManager": "4.3.0", | |
449 | + "System.Runtime": "4.3.0", | |
450 | + "System.Runtime.Extensions": "4.3.0", | |
451 | + "System.Threading": "4.3.0" | |
452 | + } | |
453 | + }, | |
454 | + "System.Collections.NonGeneric/4.0.1": { | |
455 | + "dependencies": { | |
456 | + "System.Diagnostics.Debug": "4.3.0", | |
457 | + "System.Globalization": "4.3.0", | |
458 | + "System.Resources.ResourceManager": "4.3.0", | |
459 | + "System.Runtime": "4.3.0", | |
460 | + "System.Runtime.Extensions": "4.3.0", | |
461 | + "System.Threading": "4.3.0" | |
462 | + } | |
463 | + }, | |
464 | + "System.Collections.Specialized/4.0.1": { | |
465 | + "dependencies": { | |
466 | + "System.Collections.NonGeneric": "4.0.1", | |
467 | + "System.Globalization": "4.3.0", | |
468 | + "System.Globalization.Extensions": "4.0.1", | |
469 | + "System.Resources.ResourceManager": "4.3.0", | |
470 | + "System.Runtime": "4.3.0", | |
471 | + "System.Runtime.Extensions": "4.3.0", | |
472 | + "System.Threading": "4.3.0" | |
473 | + } | |
474 | + }, | |
475 | + "System.ComponentModel/4.0.1": { | |
476 | + "dependencies": { | |
477 | + "System.Runtime": "4.3.0" | |
478 | + } | |
479 | + }, | |
480 | + "System.ComponentModel.EventBasedAsync/4.0.11": { | |
481 | + "dependencies": { | |
482 | + "System.Resources.ResourceManager": "4.3.0", | |
483 | + "System.Runtime": "4.3.0", | |
484 | + "System.Threading": "4.3.0", | |
485 | + "System.Threading.Tasks": "4.3.0" | |
486 | + } | |
487 | + }, | |
488 | + "System.ComponentModel.Primitives/4.1.0": { | |
489 | + "dependencies": { | |
490 | + "System.ComponentModel": "4.0.1", | |
491 | + "System.Resources.ResourceManager": "4.3.0", | |
492 | + "System.Runtime": "4.3.0" | |
493 | + } | |
494 | + }, | |
495 | + "System.ComponentModel.TypeConverter/4.1.0": { | |
496 | + "dependencies": { | |
497 | + "System.Collections": "4.3.0", | |
498 | + "System.Collections.NonGeneric": "4.0.1", | |
499 | + "System.Collections.Specialized": "4.0.1", | |
500 | + "System.ComponentModel": "4.0.1", | |
501 | + "System.ComponentModel.Primitives": "4.1.0", | |
502 | + "System.Globalization": "4.3.0", | |
503 | + "System.Linq": "4.1.0", | |
504 | + "System.Reflection": "4.3.0", | |
505 | + "System.Reflection.Extensions": "4.0.1", | |
506 | + "System.Reflection.Primitives": "4.3.0", | |
507 | + "System.Reflection.TypeExtensions": "4.1.0", | |
508 | + "System.Resources.ResourceManager": "4.3.0", | |
509 | + "System.Runtime": "4.3.0", | |
510 | + "System.Runtime.Extensions": "4.3.0", | |
511 | + "System.Threading": "4.3.0" | |
512 | + } | |
513 | + }, | |
514 | + "System.Diagnostics.Debug/4.3.0": { | |
515 | + "dependencies": { | |
516 | + "System.Runtime": "4.3.0" | |
517 | + } | |
518 | + }, | |
519 | + "System.Diagnostics.Process/4.1.0": { | |
520 | + "dependencies": { | |
521 | + "Microsoft.Win32.Primitives": "4.0.1", | |
522 | + "Microsoft.Win32.Registry": "4.0.0", | |
523 | + "System.Collections": "4.3.0", | |
524 | + "System.Diagnostics.Debug": "4.3.0", | |
525 | + "System.Globalization": "4.3.0", | |
526 | + "System.IO": "4.3.0", | |
527 | + "System.IO.FileSystem": "4.0.1", | |
528 | + "System.IO.FileSystem.Primitives": "4.0.1", | |
529 | + "System.Resources.ResourceManager": "4.3.0", | |
530 | + "System.Runtime": "4.3.0", | |
531 | + "System.Runtime.Extensions": "4.3.0", | |
532 | + "System.Runtime.Handles": "4.0.1", | |
533 | + "System.Runtime.InteropServices": "4.1.0", | |
534 | + "System.Text.Encoding": "4.3.0", | |
535 | + "System.Text.Encoding.Extensions": "4.0.11", | |
536 | + "System.Threading": "4.3.0", | |
537 | + "System.Threading.Tasks": "4.3.0", | |
538 | + "System.Threading.Thread": "4.0.0", | |
539 | + "System.Threading.ThreadPool": "4.0.10", | |
540 | + "runtime.native.System": "4.3.0" | |
541 | + }, | |
542 | + "runtimeTargets": { | |
543 | + "runtime/linux/lib/_._": { | |
544 | + "rid": "linux", | |
545 | + "assetType": "runtime" | |
546 | + }, | |
547 | + "runtime/osx/lib/_._": { | |
548 | + "rid": "osx", | |
549 | + "assetType": "runtime" | |
550 | + }, | |
551 | + "runtime/win/lib/_._": { | |
552 | + "rid": "win", | |
553 | + "assetType": "runtime" | |
554 | + } | |
555 | + } | |
556 | + }, | |
557 | + "System.Diagnostics.TextWriterTraceListener/4.3.0": { | |
558 | + "dependencies": { | |
559 | + "System.Diagnostics.TraceSource": "4.3.0", | |
560 | + "System.Globalization": "4.3.0", | |
561 | + "System.IO": "4.3.0", | |
562 | + "System.Resources.ResourceManager": "4.3.0", | |
563 | + "System.Runtime": "4.3.0", | |
564 | + "System.Threading": "4.3.0" | |
565 | + } | |
566 | + }, | |
567 | + "System.Diagnostics.Tools/4.0.1": { | |
568 | + "dependencies": { | |
569 | + "System.Runtime": "4.3.0" | |
570 | + } | |
571 | + }, | |
572 | + "System.Diagnostics.TraceSource/4.3.0": { | |
573 | + "dependencies": { | |
574 | + "System.Collections": "4.3.0", | |
575 | + "System.Diagnostics.Debug": "4.3.0", | |
576 | + "System.Globalization": "4.3.0", | |
577 | + "System.Resources.ResourceManager": "4.3.0", | |
578 | + "System.Runtime": "4.3.0", | |
579 | + "System.Runtime.Extensions": "4.3.0", | |
580 | + "System.Threading": "4.3.0", | |
581 | + "runtime.native.System": "4.3.0" | |
582 | + }, | |
583 | + "runtimeTargets": { | |
584 | + "runtime/unix/lib/_._": { | |
585 | + "rid": "unix", | |
586 | + "assetType": "runtime" | |
587 | + }, | |
588 | + "runtime/win/lib/_._": { | |
589 | + "rid": "win", | |
590 | + "assetType": "runtime" | |
591 | + } | |
592 | + } | |
593 | + }, | |
594 | + "System.Diagnostics.Tracing/4.1.0": { | |
595 | + "dependencies": { | |
596 | + "System.Runtime": "4.3.0" | |
597 | + } | |
598 | + }, | |
599 | + "System.Dynamic.Runtime/4.0.11": { | |
600 | + "dependencies": { | |
601 | + "System.Collections": "4.3.0", | |
602 | + "System.Diagnostics.Debug": "4.3.0", | |
603 | + "System.Globalization": "4.3.0", | |
604 | + "System.Linq": "4.1.0", | |
605 | + "System.Linq.Expressions": "4.1.0", | |
606 | + "System.ObjectModel": "4.0.12", | |
607 | + "System.Reflection": "4.3.0", | |
608 | + "System.Reflection.Emit": "4.0.1", | |
609 | + "System.Reflection.Emit.ILGeneration": "4.0.1", | |
610 | + "System.Reflection.Primitives": "4.3.0", | |
611 | + "System.Reflection.TypeExtensions": "4.1.0", | |
612 | + "System.Resources.ResourceManager": "4.3.0", | |
613 | + "System.Runtime": "4.3.0", | |
614 | + "System.Runtime.Extensions": "4.3.0", | |
615 | + "System.Threading": "4.3.0" | |
616 | + } | |
617 | + }, | |
618 | + "System.Globalization/4.3.0": { | |
619 | + "dependencies": { | |
620 | + "System.Runtime": "4.3.0" | |
621 | + } | |
622 | + }, | |
623 | + "System.Globalization.Extensions/4.0.1": { | |
624 | + "dependencies": { | |
625 | + "System.Globalization": "4.3.0", | |
626 | + "System.Resources.ResourceManager": "4.3.0", | |
627 | + "System.Runtime": "4.3.0", | |
628 | + "System.Runtime.Extensions": "4.3.0", | |
629 | + "System.Runtime.InteropServices": "4.1.0" | |
630 | + }, | |
631 | + "runtimeTargets": { | |
632 | + "runtime/unix/lib/_._": { | |
633 | + "rid": "unix", | |
634 | + "assetType": "runtime" | |
635 | + }, | |
636 | + "runtime/win/lib/_._": { | |
637 | + "rid": "win", | |
638 | + "assetType": "runtime" | |
639 | + } | |
640 | + } | |
641 | + }, | |
642 | + "System.IO/4.3.0": { | |
643 | + "dependencies": { | |
644 | + "System.Runtime": "4.3.0", | |
645 | + "System.Text.Encoding": "4.3.0", | |
646 | + "System.Threading.Tasks": "4.3.0" | |
647 | + } | |
648 | + }, | |
649 | + "System.IO.FileSystem/4.0.1": { | |
650 | + "dependencies": { | |
651 | + "System.IO": "4.3.0", | |
652 | + "System.IO.FileSystem.Primitives": "4.0.1", | |
653 | + "System.Runtime": "4.3.0", | |
654 | + "System.Runtime.Handles": "4.0.1", | |
655 | + "System.Text.Encoding": "4.3.0", | |
656 | + "System.Threading.Tasks": "4.3.0" | |
657 | + } | |
658 | + }, | |
659 | + "System.IO.FileSystem.Primitives/4.0.1": { | |
660 | + "dependencies": { | |
661 | + "System.Runtime": "4.3.0" | |
662 | + } | |
663 | + }, | |
664 | + "System.Linq/4.1.0": { | |
665 | + "dependencies": { | |
666 | + "System.Collections": "4.3.0", | |
667 | + "System.Diagnostics.Debug": "4.3.0", | |
668 | + "System.Resources.ResourceManager": "4.3.0", | |
669 | + "System.Runtime": "4.3.0", | |
670 | + "System.Runtime.Extensions": "4.3.0" | |
671 | + } | |
672 | + }, | |
673 | + "System.Linq.Expressions/4.1.0": { | |
674 | + "dependencies": { | |
675 | + "System.Collections": "4.3.0", | |
676 | + "System.Diagnostics.Debug": "4.3.0", | |
677 | + "System.Globalization": "4.3.0", | |
678 | + "System.IO": "4.3.0", | |
679 | + "System.Linq": "4.1.0", | |
680 | + "System.ObjectModel": "4.0.12", | |
681 | + "System.Reflection": "4.3.0", | |
682 | + "System.Reflection.Emit": "4.0.1", | |
683 | + "System.Reflection.Emit.ILGeneration": "4.0.1", | |
684 | + "System.Reflection.Emit.Lightweight": "4.0.1", | |
685 | + "System.Reflection.Extensions": "4.0.1", | |
686 | + "System.Reflection.Primitives": "4.3.0", | |
687 | + "System.Reflection.TypeExtensions": "4.1.0", | |
688 | + "System.Resources.ResourceManager": "4.3.0", | |
689 | + "System.Runtime": "4.3.0", | |
690 | + "System.Runtime.Extensions": "4.3.0", | |
691 | + "System.Threading": "4.3.0" | |
692 | + } | |
693 | + }, | |
694 | + "System.ObjectModel/4.0.12": { | |
695 | + "dependencies": { | |
696 | + "System.Collections": "4.3.0", | |
697 | + "System.Diagnostics.Debug": "4.3.0", | |
698 | + "System.Resources.ResourceManager": "4.3.0", | |
699 | + "System.Runtime": "4.3.0", | |
700 | + "System.Threading": "4.3.0" | |
701 | + } | |
702 | + }, | |
703 | + "System.Private.DataContractSerialization/4.1.1": { | |
704 | + "dependencies": { | |
705 | + "System.Collections": "4.3.0", | |
706 | + "System.Collections.Concurrent": "4.0.12", | |
707 | + "System.Diagnostics.Debug": "4.3.0", | |
708 | + "System.Globalization": "4.3.0", | |
709 | + "System.IO": "4.3.0", | |
710 | + "System.Linq": "4.1.0", | |
711 | + "System.Reflection": "4.3.0", | |
712 | + "System.Reflection.Emit.ILGeneration": "4.0.1", | |
713 | + "System.Reflection.Emit.Lightweight": "4.0.1", | |
714 | + "System.Reflection.Extensions": "4.0.1", | |
715 | + "System.Reflection.Primitives": "4.3.0", | |
716 | + "System.Reflection.TypeExtensions": "4.1.0", | |
717 | + "System.Resources.ResourceManager": "4.3.0", | |
718 | + "System.Runtime": "4.3.0", | |
719 | + "System.Runtime.Extensions": "4.3.0", | |
720 | + "System.Runtime.Serialization.Primitives": "4.1.1", | |
721 | + "System.Text.Encoding": "4.3.0", | |
722 | + "System.Text.Encoding.Extensions": "4.0.11", | |
723 | + "System.Text.RegularExpressions": "4.1.0", | |
724 | + "System.Threading": "4.3.0", | |
725 | + "System.Threading.Tasks": "4.3.0", | |
726 | + "System.Xml.ReaderWriter": "4.0.11", | |
727 | + "System.Xml.XmlDocument": "4.0.1", | |
728 | + "System.Xml.XmlSerializer": "4.0.11" | |
729 | + } | |
730 | + }, | |
731 | + "System.Reflection/4.3.0": { | |
732 | + "dependencies": { | |
733 | + "System.IO": "4.3.0", | |
734 | + "System.Reflection.Primitives": "4.3.0", | |
735 | + "System.Runtime": "4.3.0" | |
736 | + } | |
737 | + }, | |
738 | + "System.Reflection.Emit/4.0.1": { | |
739 | + "dependencies": { | |
740 | + "System.IO": "4.3.0", | |
741 | + "System.Reflection": "4.3.0", | |
742 | + "System.Reflection.Emit.ILGeneration": "4.0.1", | |
743 | + "System.Reflection.Primitives": "4.3.0", | |
744 | + "System.Runtime": "4.3.0" | |
745 | + } | |
746 | + }, | |
747 | + "System.Reflection.Emit.ILGeneration/4.0.1": { | |
748 | + "dependencies": { | |
749 | + "System.Reflection": "4.3.0", | |
750 | + "System.Reflection.Primitives": "4.3.0", | |
751 | + "System.Runtime": "4.3.0" | |
752 | + } | |
753 | + }, | |
754 | + "System.Reflection.Emit.Lightweight/4.0.1": { | |
755 | + "dependencies": { | |
756 | + "System.Reflection": "4.3.0", | |
757 | + "System.Reflection.Emit.ILGeneration": "4.0.1", | |
758 | + "System.Reflection.Primitives": "4.3.0", | |
759 | + "System.Runtime": "4.3.0" | |
760 | + } | |
761 | + }, | |
762 | + "System.Reflection.Extensions/4.0.1": { | |
763 | + "dependencies": { | |
764 | + "System.Reflection": "4.3.0", | |
765 | + "System.Runtime": "4.3.0" | |
766 | + } | |
767 | + }, | |
768 | + "System.Reflection.Metadata/1.3.0": { | |
769 | + "dependencies": { | |
770 | + "System.Collections": "4.3.0", | |
771 | + "System.Collections.Immutable": "1.2.0", | |
772 | + "System.Diagnostics.Debug": "4.3.0", | |
773 | + "System.IO": "4.3.0", | |
774 | + "System.Linq": "4.1.0", | |
775 | + "System.Reflection": "4.3.0", | |
776 | + "System.Reflection.Extensions": "4.0.1", | |
777 | + "System.Reflection.Primitives": "4.3.0", | |
778 | + "System.Resources.ResourceManager": "4.3.0", | |
779 | + "System.Runtime": "4.3.0", | |
780 | + "System.Runtime.Extensions": "4.3.0", | |
781 | + "System.Runtime.InteropServices": "4.1.0", | |
782 | + "System.Text.Encoding": "4.3.0", | |
783 | + "System.Text.Encoding.Extensions": "4.0.11", | |
784 | + "System.Threading": "4.3.0" | |
785 | + } | |
786 | + }, | |
787 | + "System.Reflection.Primitives/4.3.0": { | |
788 | + "dependencies": { | |
789 | + "System.Runtime": "4.3.0" | |
790 | + } | |
791 | + }, | |
792 | + "System.Reflection.TypeExtensions/4.1.0": { | |
793 | + "dependencies": { | |
794 | + "System.Reflection": "4.3.0", | |
795 | + "System.Runtime": "4.3.0" | |
796 | + } | |
797 | + }, | |
798 | + "System.Resources.ResourceManager/4.3.0": { | |
799 | + "dependencies": { | |
800 | + "System.Globalization": "4.3.0", | |
801 | + "System.Reflection": "4.3.0", | |
802 | + "System.Runtime": "4.3.0" | |
803 | + } | |
804 | + }, | |
805 | + "System.Runtime/4.3.0": {}, | |
806 | + "System.Runtime.Extensions/4.3.0": { | |
807 | + "dependencies": { | |
808 | + "System.Runtime": "4.3.0" | |
809 | + } | |
810 | + }, | |
811 | + "System.Runtime.Handles/4.0.1": { | |
812 | + "dependencies": { | |
813 | + "System.Runtime": "4.3.0" | |
814 | + } | |
815 | + }, | |
816 | + "System.Runtime.InteropServices/4.1.0": { | |
817 | + "dependencies": { | |
818 | + "System.Reflection": "4.3.0", | |
819 | + "System.Reflection.Primitives": "4.3.0", | |
820 | + "System.Runtime": "4.3.0", | |
821 | + "System.Runtime.Handles": "4.0.1" | |
822 | + } | |
823 | + }, | |
824 | + "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { | |
825 | + "dependencies": { | |
826 | + "System.Reflection": "4.3.0", | |
827 | + "System.Resources.ResourceManager": "4.3.0", | |
828 | + "System.Runtime": "4.3.0", | |
829 | + "System.Runtime.InteropServices": "4.1.0", | |
830 | + "System.Threading": "4.3.0", | |
831 | + "runtime.native.System": "4.3.0" | |
832 | + }, | |
833 | + "runtimeTargets": { | |
834 | + "runtime/unix/lib/_._": { | |
835 | + "rid": "unix", | |
836 | + "assetType": "runtime" | |
837 | + }, | |
838 | + "runtime/win/lib/_._": { | |
839 | + "rid": "win", | |
840 | + "assetType": "runtime" | |
841 | + } | |
842 | + } | |
843 | + }, | |
844 | + "System.Runtime.Loader/4.0.0": { | |
845 | + "dependencies": { | |
846 | + "System.IO": "4.3.0", | |
847 | + "System.Reflection": "4.3.0", | |
848 | + "System.Runtime": "4.3.0" | |
849 | + } | |
850 | + }, | |
851 | + "System.Runtime.Serialization.Json/4.0.2": { | |
852 | + "dependencies": { | |
853 | + "System.IO": "4.3.0", | |
854 | + "System.Private.DataContractSerialization": "4.1.1", | |
855 | + "System.Runtime": "4.3.0" | |
856 | + } | |
857 | + }, | |
858 | + "System.Runtime.Serialization.Primitives/4.1.1": { | |
859 | + "dependencies": { | |
860 | + "System.Resources.ResourceManager": "4.3.0", | |
861 | + "System.Runtime": "4.3.0" | |
862 | + } | |
863 | + }, | |
864 | + "System.Text.Encoding/4.3.0": { | |
865 | + "dependencies": { | |
866 | + "System.Runtime": "4.3.0" | |
867 | + } | |
868 | + }, | |
869 | + "System.Text.Encoding.Extensions/4.0.11": { | |
870 | + "dependencies": { | |
871 | + "System.Runtime": "4.3.0", | |
872 | + "System.Text.Encoding": "4.3.0" | |
873 | + } | |
874 | + }, | |
875 | + "System.Text.RegularExpressions/4.1.0": { | |
876 | + "dependencies": { | |
877 | + "System.Collections": "4.3.0", | |
878 | + "System.Globalization": "4.3.0", | |
879 | + "System.Resources.ResourceManager": "4.3.0", | |
880 | + "System.Runtime": "4.3.0", | |
881 | + "System.Runtime.Extensions": "4.3.0", | |
882 | + "System.Threading": "4.3.0" | |
883 | + } | |
884 | + }, | |
885 | + "System.Threading/4.3.0": { | |
886 | + "dependencies": { | |
887 | + "System.Runtime": "4.3.0", | |
888 | + "System.Threading.Tasks": "4.3.0" | |
889 | + } | |
890 | + }, | |
891 | + "System.Threading.Tasks/4.3.0": { | |
892 | + "dependencies": { | |
893 | + "System.Runtime": "4.3.0" | |
894 | + } | |
895 | + }, | |
896 | + "System.Threading.Tasks.Extensions/4.0.0": { | |
897 | + "dependencies": { | |
898 | + "System.Collections": "4.3.0", | |
899 | + "System.Runtime": "4.3.0", | |
900 | + "System.Threading.Tasks": "4.3.0" | |
901 | + } | |
902 | + }, | |
903 | + "System.Threading.Thread/4.0.0": { | |
904 | + "dependencies": { | |
905 | + "System.Runtime": "4.3.0" | |
906 | + } | |
907 | + }, | |
908 | + "System.Threading.ThreadPool/4.0.10": { | |
909 | + "dependencies": { | |
910 | + "System.Runtime": "4.3.0", | |
911 | + "System.Runtime.Handles": "4.0.1" | |
912 | + } | |
913 | + }, | |
914 | + "System.Xml.ReaderWriter/4.0.11": { | |
915 | + "dependencies": { | |
916 | + "System.Collections": "4.3.0", | |
917 | + "System.Diagnostics.Debug": "4.3.0", | |
918 | + "System.Globalization": "4.3.0", | |
919 | + "System.IO": "4.3.0", | |
920 | + "System.IO.FileSystem": "4.0.1", | |
921 | + "System.IO.FileSystem.Primitives": "4.0.1", | |
922 | + "System.Resources.ResourceManager": "4.3.0", | |
923 | + "System.Runtime": "4.3.0", | |
924 | + "System.Runtime.Extensions": "4.3.0", | |
925 | + "System.Runtime.InteropServices": "4.1.0", | |
926 | + "System.Text.Encoding": "4.3.0", | |
927 | + "System.Text.Encoding.Extensions": "4.0.11", | |
928 | + "System.Text.RegularExpressions": "4.1.0", | |
929 | + "System.Threading.Tasks": "4.3.0", | |
930 | + "System.Threading.Tasks.Extensions": "4.0.0" | |
931 | + } | |
932 | + }, | |
933 | + "System.Xml.XDocument/4.0.11": { | |
934 | + "dependencies": { | |
935 | + "System.Collections": "4.3.0", | |
936 | + "System.Diagnostics.Debug": "4.3.0", | |
937 | + "System.Diagnostics.Tools": "4.0.1", | |
938 | + "System.Globalization": "4.3.0", | |
939 | + "System.IO": "4.3.0", | |
940 | + "System.Reflection": "4.3.0", | |
941 | + "System.Resources.ResourceManager": "4.3.0", | |
942 | + "System.Runtime": "4.3.0", | |
943 | + "System.Runtime.Extensions": "4.3.0", | |
944 | + "System.Text.Encoding": "4.3.0", | |
945 | + "System.Threading": "4.3.0", | |
946 | + "System.Xml.ReaderWriter": "4.0.11" | |
947 | + } | |
948 | + }, | |
949 | + "System.Xml.XmlDocument/4.0.1": { | |
950 | + "dependencies": { | |
951 | + "System.Collections": "4.3.0", | |
952 | + "System.Diagnostics.Debug": "4.3.0", | |
953 | + "System.Globalization": "4.3.0", | |
954 | + "System.IO": "4.3.0", | |
955 | + "System.Resources.ResourceManager": "4.3.0", | |
956 | + "System.Runtime": "4.3.0", | |
957 | + "System.Runtime.Extensions": "4.3.0", | |
958 | + "System.Text.Encoding": "4.3.0", | |
959 | + "System.Threading": "4.3.0", | |
960 | + "System.Xml.ReaderWriter": "4.0.11" | |
961 | + } | |
962 | + }, | |
963 | + "System.Xml.XmlSerializer/4.0.11": { | |
964 | + "dependencies": { | |
965 | + "System.Collections": "4.3.0", | |
966 | + "System.Globalization": "4.3.0", | |
967 | + "System.IO": "4.3.0", | |
968 | + "System.Linq": "4.1.0", | |
969 | + "System.Reflection": "4.3.0", | |
970 | + "System.Reflection.Emit": "4.0.1", | |
971 | + "System.Reflection.Emit.ILGeneration": "4.0.1", | |
972 | + "System.Reflection.Extensions": "4.0.1", | |
973 | + "System.Reflection.Primitives": "4.3.0", | |
974 | + "System.Reflection.TypeExtensions": "4.1.0", | |
975 | + "System.Resources.ResourceManager": "4.3.0", | |
976 | + "System.Runtime": "4.3.0", | |
977 | + "System.Runtime.Extensions": "4.3.0", | |
978 | + "System.Text.RegularExpressions": "4.1.0", | |
979 | + "System.Threading": "4.3.0", | |
980 | + "System.Xml.ReaderWriter": "4.0.11", | |
981 | + "System.Xml.XmlDocument": "4.0.1" | |
982 | + } | |
983 | + }, | |
984 | + "System.Xml.XPath/4.0.1": { | |
985 | + "dependencies": { | |
986 | + "System.Collections": "4.3.0", | |
987 | + "System.Diagnostics.Debug": "4.3.0", | |
988 | + "System.Globalization": "4.3.0", | |
989 | + "System.IO": "4.3.0", | |
990 | + "System.Resources.ResourceManager": "4.3.0", | |
991 | + "System.Runtime": "4.3.0", | |
992 | + "System.Runtime.Extensions": "4.3.0", | |
993 | + "System.Threading": "4.3.0", | |
994 | + "System.Xml.ReaderWriter": "4.0.11" | |
995 | + } | |
996 | + }, | |
997 | + "System.Xml.XPath.XmlDocument/4.0.1": { | |
998 | + "dependencies": { | |
999 | + "System.Collections": "4.3.0", | |
1000 | + "System.Globalization": "4.3.0", | |
1001 | + "System.IO": "4.3.0", | |
1002 | + "System.Resources.ResourceManager": "4.3.0", | |
1003 | + "System.Runtime": "4.3.0", | |
1004 | + "System.Runtime.Extensions": "4.3.0", | |
1005 | + "System.Threading": "4.3.0", | |
1006 | + "System.Xml.ReaderWriter": "4.0.11", | |
1007 | + "System.Xml.XPath": "4.0.1", | |
1008 | + "System.Xml.XmlDocument": "4.0.1" | |
1009 | + }, | |
1010 | + "runtime": { | |
1011 | + "lib/netstandard1.3/System.Xml.XPath.XmlDocument.dll": { | |
1012 | + "assemblyVersion": "4.0.1.0", | |
1013 | + "fileVersion": "1.0.24212.1" | |
1014 | + } | |
1015 | + } | |
1016 | + }, | |
1017 | + "OfficeImageReducer/1.0.0": { | |
1018 | + "runtime": { | |
1019 | + "OfficeImageReducer.exe": {} | |
1020 | + } | |
1021 | + } | |
1022 | + } | |
1023 | + }, | |
1024 | + "libraries": { | |
1025 | + "UnitTestProject1/1.0.0": { | |
1026 | + "type": "project", | |
1027 | + "serviceable": false, | |
1028 | + "sha512": "" | |
1029 | + }, | |
1030 | + "Microsoft.CodeCoverage/15.8.0": { | |
1031 | + "type": "package", | |
1032 | + "serviceable": true, | |
1033 | + "sha512": "sha512-NhfNp80eWq5ms7fMrjuRqpwhL1H56IVzXF9d+OIDcEfQ92m1DyE0c+ufUE1ogB09+sYLd58IO4eJ8jyn7AifbA==", | |
1034 | + "path": "microsoft.codecoverage/15.8.0", | |
1035 | + "hashPath": "microsoft.codecoverage.15.8.0.nupkg.sha512" | |
1036 | + }, | |
1037 | + "Microsoft.CSharp/4.0.1": { | |
1038 | + "type": "package", | |
1039 | + "serviceable": true, | |
1040 | + "sha512": "sha512-17h8b5mXa87XYKrrVqdgZ38JefSUqLChUQpXgSnpzsM0nDOhE40FTeNWOJ/YmySGV6tG6T8+hjz6vxbknHJr6A==", | |
1041 | + "path": "microsoft.csharp/4.0.1", | |
1042 | + "hashPath": "microsoft.csharp.4.0.1.nupkg.sha512" | |
1043 | + }, | |
1044 | + "Microsoft.DotNet.PlatformAbstractions/1.0.3": { | |
1045 | + "type": "package", | |
1046 | + "serviceable": true, | |
1047 | + "sha512": "sha512-rF92Gp5L2asYrFNf0cKNBxzzGLh1krHuj6TRDk9wdjN2qdvJLaNYOn1s9oYkMlptYX436KiEFqxhLB+I5veXvQ==", | |
1048 | + "path": "microsoft.dotnet.platformabstractions/1.0.3", | |
1049 | + "hashPath": "microsoft.dotnet.platformabstractions.1.0.3.nupkg.sha512" | |
1050 | + }, | |
1051 | + "Microsoft.Extensions.DependencyModel/1.0.3": { | |
1052 | + "type": "package", | |
1053 | + "serviceable": true, | |
1054 | + "sha512": "sha512-Z3o19EnheuegmvgpCzwoSlnCWxYA6qIUhvKJ7ifKHHvU7U+oYR/gliLiL3LVYOOeGMEEzkpJ5W67sOcXizGtlw==", | |
1055 | + "path": "microsoft.extensions.dependencymodel/1.0.3", | |
1056 | + "hashPath": "microsoft.extensions.dependencymodel.1.0.3.nupkg.sha512" | |
1057 | + }, | |
1058 | + "Microsoft.NET.Test.Sdk/15.8.0": { | |
1059 | + "type": "package", | |
1060 | + "serviceable": true, | |
1061 | + "sha512": "sha512-Lz0K5fpv2uFU3GtZuSDIq0aGFPxiPD47raYDBfS1XXFbo+SbK2ZRurnmaFStE8hBrW9nXt3EqTUcyErUluYOvQ==", | |
1062 | + "path": "microsoft.net.test.sdk/15.8.0", | |
1063 | + "hashPath": "microsoft.net.test.sdk.15.8.0.nupkg.sha512" | |
1064 | + }, | |
1065 | + "Microsoft.TestPlatform.ObjectModel/15.8.0": { | |
1066 | + "type": "package", | |
1067 | + "serviceable": true, | |
1068 | + "sha512": "sha512-ijfUKOSGwxs7Vxj37BYNeJXaX5HtAH4GIUpxReqEg4NOYUiCIGmD2SsszT9i95lZvL/V7/wCAXkM2PCOI5uwQg==", | |
1069 | + "path": "microsoft.testplatform.objectmodel/15.8.0", | |
1070 | + "hashPath": "microsoft.testplatform.objectmodel.15.8.0.nupkg.sha512" | |
1071 | + }, | |
1072 | + "Microsoft.TestPlatform.TestHost/15.8.0": { | |
1073 | + "type": "package", | |
1074 | + "serviceable": true, | |
1075 | + "sha512": "sha512-fFEbBDCS1rP05+PP9FDL0OdyFmzHyj37mErMhunE+WpD7cGL17ZzkOSXa9Pla+RK12rxIeN8MeOl8aNuG2dUWw==", | |
1076 | + "path": "microsoft.testplatform.testhost/15.8.0", | |
1077 | + "hashPath": "microsoft.testplatform.testhost.15.8.0.nupkg.sha512" | |
1078 | + }, | |
1079 | + "Microsoft.Win32.Primitives/4.0.1": { | |
1080 | + "type": "package", | |
1081 | + "serviceable": true, | |
1082 | + "sha512": "sha512-fQnBHO9DgcmkC9dYSJoBqo6sH1VJwJprUHh8F3hbcRlxiQiBUuTntdk8tUwV490OqC2kQUrinGwZyQHTieuXRA==", | |
1083 | + "path": "microsoft.win32.primitives/4.0.1", | |
1084 | + "hashPath": "microsoft.win32.primitives.4.0.1.nupkg.sha512" | |
1085 | + }, | |
1086 | + "Microsoft.Win32.Registry/4.0.0": { | |
1087 | + "type": "package", | |
1088 | + "serviceable": true, | |
1089 | + "sha512": "sha512-q+eLtROUAQ3OxYA5mpQrgyFgzLQxIyrfT2eLpYX5IEPlHmIio2nh4F5bgOaQoGOV865kFKZZso9Oq9RlazvXtg==", | |
1090 | + "path": "microsoft.win32.registry/4.0.0", | |
1091 | + "hashPath": "microsoft.win32.registry.4.0.0.nupkg.sha512" | |
1092 | + }, | |
1093 | + "MSTest.TestAdapter/1.3.2": { | |
1094 | + "type": "package", | |
1095 | + "serviceable": true, | |
1096 | + "sha512": "sha512-CuktA7K5T42wPagNRg69mqGFBLbolWcffuQyWxUfx0ZSl2qD73COW+bJVBg73iwPweTkNa6sSRvOvnlCrLQ54g==", | |
1097 | + "path": "mstest.testadapter/1.3.2", | |
1098 | + "hashPath": "mstest.testadapter.1.3.2.nupkg.sha512" | |
1099 | + }, | |
1100 | + "MSTest.TestFramework/1.3.2": { | |
1101 | + "type": "package", | |
1102 | + "serviceable": true, | |
1103 | + "sha512": "sha512-gPBFq2drAnhGdT3RGYv/OaYdyCYXSvDK1Cm4aMA7o4T1nYBMHOutgcVInrVCq+z+wASKjmkSJ70ajA2+fB7kzQ==", | |
1104 | + "path": "mstest.testframework/1.3.2", | |
1105 | + "hashPath": "mstest.testframework.1.3.2.nupkg.sha512" | |
1106 | + }, | |
1107 | + "Newtonsoft.Json/9.0.1": { | |
1108 | + "type": "package", | |
1109 | + "serviceable": true, | |
1110 | + "sha512": "sha512-U82mHQSKaIk+lpSVCbWYKNavmNH1i5xrExDEquU1i6I5pV6UMOqRnJRSlKO3cMPfcpp0RgDY+8jUXHdQ4IfXvw==", | |
1111 | + "path": "newtonsoft.json/9.0.1", | |
1112 | + "hashPath": "newtonsoft.json.9.0.1.nupkg.sha512" | |
1113 | + }, | |
1114 | + "runtime.native.System/4.3.0": { | |
1115 | + "type": "package", | |
1116 | + "serviceable": true, | |
1117 | + "sha512": "sha512-c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", | |
1118 | + "path": "runtime.native.system/4.3.0", | |
1119 | + "hashPath": "runtime.native.system.4.3.0.nupkg.sha512" | |
1120 | + }, | |
1121 | + "System.AppContext/4.1.0": { | |
1122 | + "type": "package", | |
1123 | + "serviceable": true, | |
1124 | + "sha512": "sha512-3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==", | |
1125 | + "path": "system.appcontext/4.1.0", | |
1126 | + "hashPath": "system.appcontext.4.1.0.nupkg.sha512" | |
1127 | + }, | |
1128 | + "System.Collections/4.3.0": { | |
1129 | + "type": "package", | |
1130 | + "serviceable": true, | |
1131 | + "sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", | |
1132 | + "path": "system.collections/4.3.0", | |
1133 | + "hashPath": "system.collections.4.3.0.nupkg.sha512" | |
1134 | + }, | |
1135 | + "System.Collections.Concurrent/4.0.12": { | |
1136 | + "type": "package", | |
1137 | + "serviceable": true, | |
1138 | + "sha512": "sha512-2gBcbb3drMLgxlI0fBfxMA31ec6AEyYCHygGse4vxceJan8mRIWeKJ24BFzN7+bi/NFTgdIgufzb94LWO5EERQ==", | |
1139 | + "path": "system.collections.concurrent/4.0.12", | |
1140 | + "hashPath": "system.collections.concurrent.4.0.12.nupkg.sha512" | |
1141 | + }, | |
1142 | + "System.Collections.Immutable/1.2.0": { | |
1143 | + "type": "package", | |
1144 | + "serviceable": true, | |
1145 | + "sha512": "sha512-Cma8cBW6di16ZLibL8LYQ+cLjGzoKxpOTu/faZfDcx94ZjAGq6Nv5RO7+T1YZXqEXTZP9rt1wLVEONVpURtUqw==", | |
1146 | + "path": "system.collections.immutable/1.2.0", | |
1147 | + "hashPath": "system.collections.immutable.1.2.0.nupkg.sha512" | |
1148 | + }, | |
1149 | + "System.Collections.NonGeneric/4.0.1": { | |
1150 | + "type": "package", | |
1151 | + "serviceable": true, | |
1152 | + "sha512": "sha512-hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==", | |
1153 | + "path": "system.collections.nongeneric/4.0.1", | |
1154 | + "hashPath": "system.collections.nongeneric.4.0.1.nupkg.sha512" | |
1155 | + }, | |
1156 | + "System.Collections.Specialized/4.0.1": { | |
1157 | + "type": "package", | |
1158 | + "serviceable": true, | |
1159 | + "sha512": "sha512-/HKQyVP0yH1I0YtK7KJL/28snxHNH/bi+0lgk/+MbURF6ULhAE31MDI+NZDerNWu264YbxklXCCygISgm+HMug==", | |
1160 | + "path": "system.collections.specialized/4.0.1", | |
1161 | + "hashPath": "system.collections.specialized.4.0.1.nupkg.sha512" | |
1162 | + }, | |
1163 | + "System.ComponentModel/4.0.1": { | |
1164 | + "type": "package", | |
1165 | + "serviceable": true, | |
1166 | + "sha512": "sha512-oBZFnm7seFiVfugsIyOvQCWobNZs7FzqDV/B7tx20Ep/l3UUFCPDkdTnCNaJZTU27zjeODmy2C/cP60u3D4c9w==", | |
1167 | + "path": "system.componentmodel/4.0.1", | |
1168 | + "hashPath": "system.componentmodel.4.0.1.nupkg.sha512" | |
1169 | + }, | |
1170 | + "System.ComponentModel.EventBasedAsync/4.0.11": { | |
1171 | + "type": "package", | |
1172 | + "serviceable": true, | |
1173 | + "sha512": "sha512-Z7SO6vvQIR84daPE4uhaNdef9CjgjDMGYkas8epUhf0U3WGuaGgZ0Mm4QuNycMdbHUY8KEdZrtgxonkAiJaAlA==", | |
1174 | + "path": "system.componentmodel.eventbasedasync/4.0.11", | |
1175 | + "hashPath": "system.componentmodel.eventbasedasync.4.0.11.nupkg.sha512" | |
1176 | + }, | |
1177 | + "System.ComponentModel.Primitives/4.1.0": { | |
1178 | + "type": "package", | |
1179 | + "serviceable": true, | |
1180 | + "sha512": "sha512-sc/7eVCdxPrp3ljpgTKVaQGUXiW05phNWvtv/m2kocXqrUQvTVWKou1Edas2aDjTThLPZOxPYIGNb/HN0QjURg==", | |
1181 | + "path": "system.componentmodel.primitives/4.1.0", | |
1182 | + "hashPath": "system.componentmodel.primitives.4.1.0.nupkg.sha512" | |
1183 | + }, | |
1184 | + "System.ComponentModel.TypeConverter/4.1.0": { | |
1185 | + "type": "package", | |
1186 | + "serviceable": true, | |
1187 | + "sha512": "sha512-MnDAlaeJZy9pdB5ZdOlwdxfpI+LJQ6e0hmH7d2+y2LkiD8DRJynyDYl4Xxf3fWFm7SbEwBZh4elcfzONQLOoQw==", | |
1188 | + "path": "system.componentmodel.typeconverter/4.1.0", | |
1189 | + "hashPath": "system.componentmodel.typeconverter.4.1.0.nupkg.sha512" | |
1190 | + }, | |
1191 | + "System.Diagnostics.Debug/4.3.0": { | |
1192 | + "type": "package", | |
1193 | + "serviceable": true, | |
1194 | + "sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", | |
1195 | + "path": "system.diagnostics.debug/4.3.0", | |
1196 | + "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512" | |
1197 | + }, | |
1198 | + "System.Diagnostics.Process/4.1.0": { | |
1199 | + "type": "package", | |
1200 | + "serviceable": true, | |
1201 | + "sha512": "sha512-mpVZ5bnlSs3tTeJ6jYyDJEIa6tavhAd88lxq1zbYhkkCu0Pno2+gHXcvZcoygq2d8JxW3gojXqNJMTAshduqZA==", | |
1202 | + "path": "system.diagnostics.process/4.1.0", | |
1203 | + "hashPath": "system.diagnostics.process.4.1.0.nupkg.sha512" | |
1204 | + }, | |
1205 | + "System.Diagnostics.TextWriterTraceListener/4.3.0": { | |
1206 | + "type": "package", | |
1207 | + "serviceable": true, | |
1208 | + "sha512": "sha512-F11kHWeiwYjFWto+kr8tt9ULMH0k8MsT1XmdCGPTLYHhWgN+2g7JsIZiXDrxlFGccSNkbjfwQy4xIS38gzUiZA==", | |
1209 | + "path": "system.diagnostics.textwritertracelistener/4.3.0", | |
1210 | + "hashPath": "system.diagnostics.textwritertracelistener.4.3.0.nupkg.sha512" | |
1211 | + }, | |
1212 | + "System.Diagnostics.Tools/4.0.1": { | |
1213 | + "type": "package", | |
1214 | + "serviceable": true, | |
1215 | + "sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==", | |
1216 | + "path": "system.diagnostics.tools/4.0.1", | |
1217 | + "hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512" | |
1218 | + }, | |
1219 | + "System.Diagnostics.TraceSource/4.3.0": { | |
1220 | + "type": "package", | |
1221 | + "serviceable": true, | |
1222 | + "sha512": "sha512-VnYp1NxGx8Ww731y2LJ1vpfb/DKVNKEZ8Jsh5SgQTZREL/YpWRArgh9pI8CDLmgHspZmLL697CaLvH85qQpRiw==", | |
1223 | + "path": "system.diagnostics.tracesource/4.3.0", | |
1224 | + "hashPath": "system.diagnostics.tracesource.4.3.0.nupkg.sha512" | |
1225 | + }, | |
1226 | + "System.Diagnostics.Tracing/4.1.0": { | |
1227 | + "type": "package", | |
1228 | + "serviceable": true, | |
1229 | + "sha512": "sha512-vDN1PoMZCkkdNjvZLql592oYJZgS7URcJzJ7bxeBgGtx5UtR5leNm49VmfHGqIffX4FKacHbI3H6UyNSHQknBg==", | |
1230 | + "path": "system.diagnostics.tracing/4.1.0", | |
1231 | + "hashPath": "system.diagnostics.tracing.4.1.0.nupkg.sha512" | |
1232 | + }, | |
1233 | + "System.Dynamic.Runtime/4.0.11": { | |
1234 | + "type": "package", | |
1235 | + "serviceable": true, | |
1236 | + "sha512": "sha512-db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", | |
1237 | + "path": "system.dynamic.runtime/4.0.11", | |
1238 | + "hashPath": "system.dynamic.runtime.4.0.11.nupkg.sha512" | |
1239 | + }, | |
1240 | + "System.Globalization/4.3.0": { | |
1241 | + "type": "package", | |
1242 | + "serviceable": true, | |
1243 | + "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", | |
1244 | + "path": "system.globalization/4.3.0", | |
1245 | + "hashPath": "system.globalization.4.3.0.nupkg.sha512" | |
1246 | + }, | |
1247 | + "System.Globalization.Extensions/4.0.1": { | |
1248 | + "type": "package", | |
1249 | + "serviceable": true, | |
1250 | + "sha512": "sha512-KKo23iKeOaIg61SSXwjANN7QYDr/3op3OWGGzDzz7mypx0Za0fZSeG0l6cco8Ntp8YMYkIQcAqlk8yhm5/Uhcg==", | |
1251 | + "path": "system.globalization.extensions/4.0.1", | |
1252 | + "hashPath": "system.globalization.extensions.4.0.1.nupkg.sha512" | |
1253 | + }, | |
1254 | + "System.IO/4.3.0": { | |
1255 | + "type": "package", | |
1256 | + "serviceable": true, | |
1257 | + "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", | |
1258 | + "path": "system.io/4.3.0", | |
1259 | + "hashPath": "system.io.4.3.0.nupkg.sha512" | |
1260 | + }, | |
1261 | + "System.IO.FileSystem/4.0.1": { | |
1262 | + "type": "package", | |
1263 | + "serviceable": true, | |
1264 | + "sha512": "sha512-IBErlVq5jOggAD69bg1t0pJcHaDbJbWNUZTPI96fkYWzwYbN6D9wRHMULLDd9dHsl7C2YsxXL31LMfPI1SWt8w==", | |
1265 | + "path": "system.io.filesystem/4.0.1", | |
1266 | + "hashPath": "system.io.filesystem.4.0.1.nupkg.sha512" | |
1267 | + }, | |
1268 | + "System.IO.FileSystem.Primitives/4.0.1": { | |
1269 | + "type": "package", | |
1270 | + "serviceable": true, | |
1271 | + "sha512": "sha512-kWkKD203JJKxJeE74p8aF8y4Qc9r9WQx4C0cHzHPrY3fv/L/IhWnyCHaFJ3H1QPOH6A93whlQ2vG5nHlBDvzWQ==", | |
1272 | + "path": "system.io.filesystem.primitives/4.0.1", | |
1273 | + "hashPath": "system.io.filesystem.primitives.4.0.1.nupkg.sha512" | |
1274 | + }, | |
1275 | + "System.Linq/4.1.0": { | |
1276 | + "type": "package", | |
1277 | + "serviceable": true, | |
1278 | + "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==", | |
1279 | + "path": "system.linq/4.1.0", | |
1280 | + "hashPath": "system.linq.4.1.0.nupkg.sha512" | |
1281 | + }, | |
1282 | + "System.Linq.Expressions/4.1.0": { | |
1283 | + "type": "package", | |
1284 | + "serviceable": true, | |
1285 | + "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==", | |
1286 | + "path": "system.linq.expressions/4.1.0", | |
1287 | + "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512" | |
1288 | + }, | |
1289 | + "System.ObjectModel/4.0.12": { | |
1290 | + "type": "package", | |
1291 | + "serviceable": true, | |
1292 | + "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==", | |
1293 | + "path": "system.objectmodel/4.0.12", | |
1294 | + "hashPath": "system.objectmodel.4.0.12.nupkg.sha512" | |
1295 | + }, | |
1296 | + "System.Private.DataContractSerialization/4.1.1": { | |
1297 | + "type": "package", | |
1298 | + "serviceable": true, | |
1299 | + "sha512": "sha512-lcqFBUaCZxPiUkA4dlSOoPZGtZsAuuElH2XHgLwGLxd7ZozWetV5yiz0qGAV2AUYOqw97MtZBjbLMN16Xz4vXA==", | |
1300 | + "path": "system.private.datacontractserialization/4.1.1", | |
1301 | + "hashPath": "system.private.datacontractserialization.4.1.1.nupkg.sha512" | |
1302 | + }, | |
1303 | + "System.Reflection/4.3.0": { | |
1304 | + "type": "package", | |
1305 | + "serviceable": true, | |
1306 | + "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", | |
1307 | + "path": "system.reflection/4.3.0", | |
1308 | + "hashPath": "system.reflection.4.3.0.nupkg.sha512" | |
1309 | + }, | |
1310 | + "System.Reflection.Emit/4.0.1": { | |
1311 | + "type": "package", | |
1312 | + "serviceable": true, | |
1313 | + "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==", | |
1314 | + "path": "system.reflection.emit/4.0.1", | |
1315 | + "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512" | |
1316 | + }, | |
1317 | + "System.Reflection.Emit.ILGeneration/4.0.1": { | |
1318 | + "type": "package", | |
1319 | + "serviceable": true, | |
1320 | + "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==", | |
1321 | + "path": "system.reflection.emit.ilgeneration/4.0.1", | |
1322 | + "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512" | |
1323 | + }, | |
1324 | + "System.Reflection.Emit.Lightweight/4.0.1": { | |
1325 | + "type": "package", | |
1326 | + "serviceable": true, | |
1327 | + "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==", | |
1328 | + "path": "system.reflection.emit.lightweight/4.0.1", | |
1329 | + "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512" | |
1330 | + }, | |
1331 | + "System.Reflection.Extensions/4.0.1": { | |
1332 | + "type": "package", | |
1333 | + "serviceable": true, | |
1334 | + "sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==", | |
1335 | + "path": "system.reflection.extensions/4.0.1", | |
1336 | + "hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512" | |
1337 | + }, | |
1338 | + "System.Reflection.Metadata/1.3.0": { | |
1339 | + "type": "package", | |
1340 | + "serviceable": true, | |
1341 | + "sha512": "sha512-jMSCxA4LSyKBGRDm/WtfkO03FkcgRzHxwvQRib1bm2GZ8ifKM1MX1al6breGCEQK280mdl9uQS7JNPXRYk90jw==", | |
1342 | + "path": "system.reflection.metadata/1.3.0", | |
1343 | + "hashPath": "system.reflection.metadata.1.3.0.nupkg.sha512" | |
1344 | + }, | |
1345 | + "System.Reflection.Primitives/4.3.0": { | |
1346 | + "type": "package", | |
1347 | + "serviceable": true, | |
1348 | + "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", | |
1349 | + "path": "system.reflection.primitives/4.3.0", | |
1350 | + "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512" | |
1351 | + }, | |
1352 | + "System.Reflection.TypeExtensions/4.1.0": { | |
1353 | + "type": "package", | |
1354 | + "serviceable": true, | |
1355 | + "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==", | |
1356 | + "path": "system.reflection.typeextensions/4.1.0", | |
1357 | + "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512" | |
1358 | + }, | |
1359 | + "System.Resources.ResourceManager/4.3.0": { | |
1360 | + "type": "package", | |
1361 | + "serviceable": true, | |
1362 | + "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", | |
1363 | + "path": "system.resources.resourcemanager/4.3.0", | |
1364 | + "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512" | |
1365 | + }, | |
1366 | + "System.Runtime/4.3.0": { | |
1367 | + "type": "package", | |
1368 | + "serviceable": true, | |
1369 | + "sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", | |
1370 | + "path": "system.runtime/4.3.0", | |
1371 | + "hashPath": "system.runtime.4.3.0.nupkg.sha512" | |
1372 | + }, | |
1373 | + "System.Runtime.Extensions/4.3.0": { | |
1374 | + "type": "package", | |
1375 | + "serviceable": true, | |
1376 | + "sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", | |
1377 | + "path": "system.runtime.extensions/4.3.0", | |
1378 | + "hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512" | |
1379 | + }, | |
1380 | + "System.Runtime.Handles/4.0.1": { | |
1381 | + "type": "package", | |
1382 | + "serviceable": true, | |
1383 | + "sha512": "sha512-nCJvEKguXEvk2ymk1gqj625vVnlK3/xdGzx0vOKicQkoquaTBJTP13AIYkocSUwHCLNBwUbXTqTWGDxBTWpt7g==", | |
1384 | + "path": "system.runtime.handles/4.0.1", | |
1385 | + "hashPath": "system.runtime.handles.4.0.1.nupkg.sha512" | |
1386 | + }, | |
1387 | + "System.Runtime.InteropServices/4.1.0": { | |
1388 | + "type": "package", | |
1389 | + "serviceable": true, | |
1390 | + "sha512": "sha512-16eu3kjHS633yYdkjwShDHZLRNMKVi/s0bY8ODiqJ2RfMhDMAwxZaUaWVnZ2P71kr/or+X9o/xFWtNqz8ivieQ==", | |
1391 | + "path": "system.runtime.interopservices/4.1.0", | |
1392 | + "hashPath": "system.runtime.interopservices.4.1.0.nupkg.sha512" | |
1393 | + }, | |
1394 | + "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { | |
1395 | + "type": "package", | |
1396 | + "serviceable": true, | |
1397 | + "sha512": "sha512-hWPhJxc453RCa8Z29O91EmfGeZIHX1ZH2A8L6lYQVSaKzku2DfArSfMEb1/MYYzPQRJZeu0c9dmYeJKxW5Fgng==", | |
1398 | + "path": "system.runtime.interopservices.runtimeinformation/4.0.0", | |
1399 | + "hashPath": "system.runtime.interopservices.runtimeinformation.4.0.0.nupkg.sha512" | |
1400 | + }, | |
1401 | + "System.Runtime.Loader/4.0.0": { | |
1402 | + "type": "package", | |
1403 | + "serviceable": true, | |
1404 | + "sha512": "sha512-4UN78GOVU/mbDFcXkEWtetJT/sJ0yic2gGk1HSlSpWI0TDf421xnrZTDZnwNBapk1GQeYN7U1lTj/aQB1by6ow==", | |
1405 | + "path": "system.runtime.loader/4.0.0", | |
1406 | + "hashPath": "system.runtime.loader.4.0.0.nupkg.sha512" | |
1407 | + }, | |
1408 | + "System.Runtime.Serialization.Json/4.0.2": { | |
1409 | + "type": "package", | |
1410 | + "serviceable": true, | |
1411 | + "sha512": "sha512-+7DIJhnKYgCzUgcLbVTtRQb2l1M0FP549XFlFkQM5lmNiUBl44AfNbx4bz61xA8PzLtlYwfmif4JJJW7MPPnjg==", | |
1412 | + "path": "system.runtime.serialization.json/4.0.2", | |
1413 | + "hashPath": "system.runtime.serialization.json.4.0.2.nupkg.sha512" | |
1414 | + }, | |
1415 | + "System.Runtime.Serialization.Primitives/4.1.1": { | |
1416 | + "type": "package", | |
1417 | + "serviceable": true, | |
1418 | + "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==", | |
1419 | + "path": "system.runtime.serialization.primitives/4.1.1", | |
1420 | + "hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512" | |
1421 | + }, | |
1422 | + "System.Text.Encoding/4.3.0": { | |
1423 | + "type": "package", | |
1424 | + "serviceable": true, | |
1425 | + "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", | |
1426 | + "path": "system.text.encoding/4.3.0", | |
1427 | + "hashPath": "system.text.encoding.4.3.0.nupkg.sha512" | |
1428 | + }, | |
1429 | + "System.Text.Encoding.Extensions/4.0.11": { | |
1430 | + "type": "package", | |
1431 | + "serviceable": true, | |
1432 | + "sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==", | |
1433 | + "path": "system.text.encoding.extensions/4.0.11", | |
1434 | + "hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512" | |
1435 | + }, | |
1436 | + "System.Text.RegularExpressions/4.1.0": { | |
1437 | + "type": "package", | |
1438 | + "serviceable": true, | |
1439 | + "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==", | |
1440 | + "path": "system.text.regularexpressions/4.1.0", | |
1441 | + "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512" | |
1442 | + }, | |
1443 | + "System.Threading/4.3.0": { | |
1444 | + "type": "package", | |
1445 | + "serviceable": true, | |
1446 | + "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", | |
1447 | + "path": "system.threading/4.3.0", | |
1448 | + "hashPath": "system.threading.4.3.0.nupkg.sha512" | |
1449 | + }, | |
1450 | + "System.Threading.Tasks/4.3.0": { | |
1451 | + "type": "package", | |
1452 | + "serviceable": true, | |
1453 | + "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", | |
1454 | + "path": "system.threading.tasks/4.3.0", | |
1455 | + "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512" | |
1456 | + }, | |
1457 | + "System.Threading.Tasks.Extensions/4.0.0": { | |
1458 | + "type": "package", | |
1459 | + "serviceable": true, | |
1460 | + "sha512": "sha512-pH4FZDsZQ/WmgJtN4LWYmRdJAEeVkyriSwrv2Teoe5FOU0Yxlb6II6GL8dBPOfRmutHGATduj3ooMt7dJ2+i+w==", | |
1461 | + "path": "system.threading.tasks.extensions/4.0.0", | |
1462 | + "hashPath": "system.threading.tasks.extensions.4.0.0.nupkg.sha512" | |
1463 | + }, | |
1464 | + "System.Threading.Thread/4.0.0": { | |
1465 | + "type": "package", | |
1466 | + "serviceable": true, | |
1467 | + "sha512": "sha512-gIdJqDXlOr5W9zeqFErLw3dsOsiShSCYtF9SEHitACycmvNvY8odf9kiKvp6V7aibc8C4HzzNBkWXjyfn7plbQ==", | |
1468 | + "path": "system.threading.thread/4.0.0", | |
1469 | + "hashPath": "system.threading.thread.4.0.0.nupkg.sha512" | |
1470 | + }, | |
1471 | + "System.Threading.ThreadPool/4.0.10": { | |
1472 | + "type": "package", | |
1473 | + "serviceable": true, | |
1474 | + "sha512": "sha512-IMXgB5Vf/5Qw1kpoVgJMOvUO1l32aC+qC3OaIZjWJOjvcxuxNWOK2ZTWWYXfij22NHxT2j1yWX5vlAeQWld9vA==", | |
1475 | + "path": "system.threading.threadpool/4.0.10", | |
1476 | + "hashPath": "system.threading.threadpool.4.0.10.nupkg.sha512" | |
1477 | + }, | |
1478 | + "System.Xml.ReaderWriter/4.0.11": { | |
1479 | + "type": "package", | |
1480 | + "serviceable": true, | |
1481 | + "sha512": "sha512-ZIiLPsf67YZ9zgr31vzrFaYQqxRPX9cVHjtPSnmx4eN6lbS/yEyYNr2vs1doGDEscF0tjCZFsk9yUg1sC9e8tg==", | |
1482 | + "path": "system.xml.readerwriter/4.0.11", | |
1483 | + "hashPath": "system.xml.readerwriter.4.0.11.nupkg.sha512" | |
1484 | + }, | |
1485 | + "System.Xml.XDocument/4.0.11": { | |
1486 | + "type": "package", | |
1487 | + "serviceable": true, | |
1488 | + "sha512": "sha512-Mk2mKmPi0nWaoiYeotq1dgeNK1fqWh61+EK+w4Wu8SWuTYLzpUnschb59bJtGywaPq7SmTuPf44wrXRwbIrukg==", | |
1489 | + "path": "system.xml.xdocument/4.0.11", | |
1490 | + "hashPath": "system.xml.xdocument.4.0.11.nupkg.sha512" | |
1491 | + }, | |
1492 | + "System.Xml.XmlDocument/4.0.1": { | |
1493 | + "type": "package", | |
1494 | + "serviceable": true, | |
1495 | + "sha512": "sha512-2eZu6IP+etFVBBFUFzw2w6J21DqIN5eL9Y8r8JfJWUmV28Z5P0SNU01oCisVHQgHsDhHPnmq2s1hJrJCFZWloQ==", | |
1496 | + "path": "system.xml.xmldocument/4.0.1", | |
1497 | + "hashPath": "system.xml.xmldocument.4.0.1.nupkg.sha512" | |
1498 | + }, | |
1499 | + "System.Xml.XmlSerializer/4.0.11": { | |
1500 | + "type": "package", | |
1501 | + "serviceable": true, | |
1502 | + "sha512": "sha512-FrazwwqfIXTfq23mfv4zH+BjqkSFNaNFBtjzu3I9NRmG8EELYyrv/fJnttCIwRMFRR/YKXF1hmsMmMEnl55HGw==", | |
1503 | + "path": "system.xml.xmlserializer/4.0.11", | |
1504 | + "hashPath": "system.xml.xmlserializer.4.0.11.nupkg.sha512" | |
1505 | + }, | |
1506 | + "System.Xml.XPath/4.0.1": { | |
1507 | + "type": "package", | |
1508 | + "serviceable": true, | |
1509 | + "sha512": "sha512-UWd1H+1IJ9Wlq5nognZ/XJdyj8qPE4XufBUkAW59ijsCPjZkZe0MUzKKJFBr+ZWBe5Wq1u1d5f2CYgE93uH7DA==", | |
1510 | + "path": "system.xml.xpath/4.0.1", | |
1511 | + "hashPath": "system.xml.xpath.4.0.1.nupkg.sha512" | |
1512 | + }, | |
1513 | + "System.Xml.XPath.XmlDocument/4.0.1": { | |
1514 | + "type": "package", | |
1515 | + "serviceable": true, | |
1516 | + "sha512": "sha512-Zm2BdeanuncYs3NhCj4c9e1x3EXFzFBVv2wPEc/Dj4ZbI9R8ecLSR5frAsx4zJCPBtKQreQ7Q/KxJEohJZbfzA==", | |
1517 | + "path": "system.xml.xpath.xmldocument/4.0.1", | |
1518 | + "hashPath": "system.xml.xpath.xmldocument.4.0.1.nupkg.sha512" | |
1519 | + }, | |
1520 | + "OfficeImageReducer/1.0.0": { | |
1521 | + "type": "project", | |
1522 | + "serviceable": false, | |
1523 | + "sha512": "" | |
1524 | + } | |
1525 | + } | |
1526 | +} | |
\ No newline at end of file |
@@ -0,0 +1,9 @@ | ||
1 | +{ | |
2 | + "runtimeOptions": { | |
3 | + "additionalProbingPaths": [ | |
4 | + "C:\\Users\\931101\\.dotnet\\store\\|arch|\\|tfm|", | |
5 | + "C:\\Users\\931101\\.nuget\\packages", | |
6 | + "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" | |
7 | + ] | |
8 | + } | |
9 | +} | |
\ No newline at end of file |
@@ -0,0 +1,9 @@ | ||
1 | +{ | |
2 | + "runtimeOptions": { | |
3 | + "tfm": "netcoreapp2.1", | |
4 | + "framework": { | |
5 | + "name": "Microsoft.NETCore.App", | |
6 | + "version": "2.1.0" | |
7 | + } | |
8 | + } | |
9 | +} | |
\ No newline at end of file |
@@ -0,0 +1,19 @@ | ||
1 | +using Microsoft.VisualStudio.TestTools.UnitTesting; | |
2 | + | |
3 | +namespace UnitTestProject1 | |
4 | +{ | |
5 | + [TestClass] | |
6 | + public class UnitTest1 | |
7 | + { | |
8 | + [TestMethod] | |
9 | + [Timeout(20000)] | |
10 | + public void TestMethod1() | |
11 | + { | |
12 | + var a =OfficeImageReducer.ClassMyCommon.Left("abcdef", 3); | |
13 | + Assert.AreEqual(a, "abc","テスト1に失敗"); | |
14 | + | |
15 | + var b = OfficeImageReducer.ClassMyCommon.Right("abcdef", 4); | |
16 | + Assert.AreEqual(b, "cdef","テスト2に失敗"); | |
17 | + } | |
18 | + } | |
19 | +} | |
\ No newline at end of file |