Создание консольного приложения на основе csc.exe в батнике. Часть 2
29.12.2020, 13:23. Показов 1337. Ответов 1
Доброго времени суток. Время прошло, сподвигов нет.
Код батника:
| Windows Batch file | 1
2
3
4
5
6
7
8
9
10
11
| cls
Del ConsoleApp4.exe
Del ConsoleApp4.exe.config
@SET CSC="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe"
%CSC% /t:exe /out:ConsoleApp4.exe .\CS\Program.cs /r:.\DLL\LightningDB.dll;DLL\netstandard.dll
@copy .\config\HelloWorld.config ConsoleApp4.exe.config
Pause |
|
Код конфига "HelloWorld":
| Code | 1
2
3
4
5
6
7
8
| <?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="DLL" />
</assemblyBinding>
</runtime>
</configuration> |
|
Код программы:
| C# | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
| using LightningDB;
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
//using System.MemoryStream;
using System.Text;
//using System.ValueTuple;
namespace lmdb
{
[Serializable]
class myclass
{
public string s;
public int i;
public int j;
public myclass()
{
s = "0";
i = 0;
j = 0;
}
public myclass(string s, int i, int j)
{
this.s = s;
this.i = i;
this.j = j;
}
}
class Program
{
private static byte[] Object2Array(Object obj)
{
if (obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}
// Convert a byte array to an Object
private static Object Array2Object(byte[] arrBytes)
{
MemoryStream memStream = new MemoryStream();
BinaryFormatter binForm = new BinaryFormatter();
memStream.Write(arrBytes, 0, arrBytes.Length);
memStream.Seek(0, SeekOrigin.Begin);
Object obj = (Object)binForm.Deserialize(memStream);
return obj;
}
static void Main(string[] args)
{
LightningEnvironment _env;
LightningTransaction _txn;
LightningDatabase _db;
_env = new LightningEnvironment("./");
_env.MaxDatabases = 2;
_env.Open();
_txn = _env.BeginTransaction();
_db = _txn.OpenDatabase(configuration: new DatabaseConfiguration { Flags = DatabaseOpenFlags.Create });
_txn.Put(_db, Encoding.UTF8.GetBytes("key"), Encoding.UTF8.GetBytes("value1212"));
var val = _txn.Get(_db, Encoding.UTF8.GetBytes("atomkey")).value;
Console.WriteLine("Выводим атомарные значения по ключу \"atomkey\" : ");
Console.WriteLine(System.Text.Encoding.Default.GetString(val.CopyToNewArray()));
Console.WriteLine();
_txn.Put(_db, Encoding.UTF8.GetBytes("keybyte"), Object2Array(1234));
val = _txn.Get(_db, Encoding.UTF8.GetBytes("keybyte")).GetValue;
Console.WriteLine("Выводим массив байт по ключу \"keybyte\" : ");
Console.WriteLine(Array2Object(val.CopyToNewArray()));
Console.WriteLine();
List<Object> list = new List<Object>();
list.Add(123);
list.Add("сторчка-строчка");
list.Add(false);
_txn.Put(_db, Encoding.UTF8.GetBytes("keylist"), Object2Array(list));
val = _txn.Get(_db, Encoding.UTF8.GetBytes("keylist")).GetValue;
List<Object> newlist = (List<Object>)Array2Object(val.CopyToNewArray());
Console.WriteLine("Выводим список по ключу \"keylist\" : ");
foreach (Object i in newlist)
{
Console.WriteLine(i);
}
Console.WriteLine();
HashSet<Object> set = new HashSet<Object>();
set.Add(123);
set.Add("стор");
set.Add("очка");
set.Add(false);
set.Add(false);
_txn.Put(_db, Encoding.UTF8.GetBytes("keyset"), Object2Array(set));
val = _txn.Get(_db, Encoding.UTF8.GetBytes("keyset")).GetValue;
HashSet<Object> newset = (HashSet<Object>)Array2Object(val.CopyToNewArray());
Console.WriteLine("Выводим элементы несортированного множества HashSet по ключу \"keyset\" : ");
foreach (Object i in newset)
{
Console.WriteLine(i);
}
Console.WriteLine();
Dictionary<Object, Object> table = new Dictionary<Object, Object>();
table.Add("Первый ключ", "№1");
table.Add(321, "номер квартиры");
table.Add(false, "это правда");
_txn.Put(_db, Encoding.UTF8.GetBytes("keytable"), Object2Array(table));
val = _txn.Get(_db, Encoding.UTF8.GetBytes("keytable")).GetValue;
Dictionary<Object, Object> newtable = (Dictionary<Object, Object>)Array2Object(val.CopyToNewArray());
Console.WriteLine("Выводим элементы пар \"ключ-хранилище\" HashTable по ключу \"keytable\" : ");
foreach (KeyValuePair<Object, Object> i in newtable)
{
Console.WriteLine(i.Key + " -- " + i.GetValue);
}
Console.WriteLine();
myclass mc = new myclass("один", 50, -12);
_txn.Put(_db, Encoding.UTF8.GetBytes("keymyclass"), Object2Array(mc));
val = _txn.Get(_db, Encoding.UTF8.GetBytes("keymyclass")).GetValue;
myclass newclass = (myclass)Array2Object(val.CopyToNewArray());
Console.WriteLine("Выводим значения своего класса MyClass по ключу \"keymyclass\" : ");
Console.WriteLine("Текст: " + newclass.s + "| Число 1: " + newclass.i + "| Число 2: " + newclass.j);
_txn.Put(_db, Encoding.UTF8.GetBytes("keymyclass"), Object2Array(mc));
Console.ReadLine();
}
private static List<T> ArrayList<T>()
{
throw new NotImplementedException();
}
}
} |
|
Результат батника:
| Code | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| C:\DB\10>Del ConsoleApp4.exe
Не удается найти C:\DB\10\ConsoleApp4.exe
C:\DB\10>Del ConsoleApp4.exe.config
C:\DB\10>"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe" /t:exe /out:ConsoleApp4.exe .\CS\Program.cs /r:.\DLL\LightningDB.dll;DLL\netstandard.dll
Microsoft (R) Visual C# Compiler version 4.8.4084.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.
This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language, see http://go.microsoft.com/fwlink/?LinkID=533240
cs\Program.cs(79,13): error CS0012: Тип "System.ReadOnlySpan`1<T0>" определен в сборке, ссылка на которую отсутствует.
Следует добавить ссылку на сборку "System.Memory, Version=4.0.1.1, Culture=neutral,
PublicKeyToken=cc7b13ffcd2ddd51".
DLL\LightningDB.dll: (Местоположение символа относительно предыдущей ошибки)
cs\Program.cs(81,13): error CS0012: Тип "System.ValueTuple<T0,T1,T2>" определен в сборке, ссылка на которую отсутствует. Следует добавить ссылку на сборку "System.ValueTuple, Version=0.0.0.0, Culture=neutral,
PublicKeyToken=cc7b13ffcd2ddd51".
DLL\netstandard.dll: (Местоположение символа относительно предыдущей ошибки)
cs\Program.cs(81,72): error CS1061:
"System.ValueTuple<LightningDB.MDBResultCode,LightningDB.MDBValue,LightningDB.MDBValue>" не содержит определение для "value". Не удалось найти метод расширения "value", принимающий первый аргумент типа
"System.ValueTuple<LightningDB.MDBResultCode,LightningDB.MDBValue,LightningDB.MDBValue>" (пропущена директива
using или ссылка на сборку?)
cs\Program.cs(91,68): error CS1061:
"System.ValueTuple<LightningDB.MDBResultCode,LightningDB.MDBValue,LightningDB.MDBValue>" не содержит определение для "GetValue". Не удалось найти метод расширения "GetValue", принимающий первый аргумент типа
"System.ValueTuple<LightningDB.MDBResultCode,LightningDB.MDBValue,LightningDB.MDBValue>" (пропущена директива
using или ссылка на сборку?)
cs\Program.cs(101,68): error CS1061:
"System.ValueTuple<LightningDB.MDBResultCode,LightningDB.MDBValue,LightningDB.MDBValue>" не содержит определение для "GetValue". Не удалось найти метод расширения "GetValue", принимающий первый аргумент типа
"System.ValueTuple<LightningDB.MDBResultCode,LightningDB.MDBValue,LightningDB.MDBValue>" (пропущена директива
using или ссылка на сборку?)
cs\Program.cs(120,67): error CS1061:
"System.ValueTuple<LightningDB.MDBResultCode,LightningDB.MDBValue,LightningDB.MDBValue>" не содержит определение для "GetValue". Не удалось найти метод расширения "GetValue", принимающий первый аргумент типа
"System.ValueTuple<LightningDB.MDBResultCode,LightningDB.MDBValue,LightningDB.MDBValue>" (пропущена директива
using или ссылка на сборку?)
cs\Program.cs(134,69): error CS1061:
"System.ValueTuple<LightningDB.MDBResultCode,LightningDB.MDBValue,LightningDB.MDBValue>" не содержит определение для "GetValue". Не удалось найти метод расширения "GetValue", принимающий первый аргумент типа
"System.ValueTuple<LightningDB.MDBResultCode,LightningDB.MDBValue,LightningDB.MDBValue>" (пропущена директива
using или ссылка на сборку?)
cs\Program.cs(140,55): error CS1061: "System.Collections.Generic.KeyValuePair<object,object>" не содержит определение
для "GetValue". Не удалось найти метод расширения "GetValue", принимающий первый аргумент типа
"System.Collections.Generic.KeyValuePair<object,object>" (пропущена директива using или ссылка на сборку?)
cs\Program.cs(147,71): error CS1061:
"System.ValueTuple<LightningDB.MDBResultCode,LightningDB.MDBValue,LightningDB.MDBValue>" не содержит определение для "GetValue". Не удалось найти метод расширения "GetValue", принимающий первый аргумент типа
"System.ValueTuple<LightningDB.MDBResultCode,LightningDB.MDBValue,LightningDB.MDBValue>" (пропущена директива
using или ссылка на сборку?)
Скопировано файлов: 1.
C:\DB\10>Pause
Для продолжения нажмите любую клавишу . . . |
|
Помогите создать консольное приложение в виде экзешника, чтобы он выдавал данные бд.
0
|