提交 95d534f2 编写于 作者: T tanghai

删除ET Book的Example,维护麻烦,需要的可以看5.0

上级 0ba82a4b
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>Example1._1</RootNamespace>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\..\..\Unity\Assets\Model\Base\OneThreadSynchronizationContext.cs">
<Link>OneThreadSynchronizationContext.cs</Link>
</Compile>
</ItemGroup>
</Project>
using System;
using System.Threading;
using ETModel;
namespace Example2_1
{
internal class Program
{
private static int loopCount = 0;
private static void Main()
{
OneThreadSynchronizationContext _ = OneThreadSynchronizationContext.Instance;
WaitTimeAsync(5000, WaitTimeFinishCallback);
while (true)
{
OneThreadSynchronizationContext.Instance.Update();
Thread.Sleep(1);
++loopCount;
if (loopCount % 10000 == 0)
{
Console.WriteLine($"loop count: {loopCount}");
}
}
}
private static void WaitTimeAsync(int waitTime, Action action)
{
Thread thread = new Thread(()=>WaitTime(waitTime, action));
thread.Start();
}
private static void WaitTimeFinishCallback()
{
Console.WriteLine($"WaitTimeAsync finsih loopCount的值是: {loopCount}");
WaitTimeAsync(4000, WaitTimeFinishCallback3);
}
private static void WaitTimeFinishCallback3()
{
Console.WriteLine($"WaitTimeAsync finsih loopCount的值是: {loopCount}");
WaitTimeAsync(3000, WaitTimeFinishCallback2);
}
private static void WaitTimeFinishCallback2()
{
Console.WriteLine($"WaitTimeAsync finsih loopCount的值是: {loopCount}");
}
/// <summary>
/// 在另外的线程等待
/// </summary>
private static void WaitTime(int waitTime, Action action)
{
Thread.Sleep(waitTime);
// 将action扔回主线程执行
OneThreadSynchronizationContext.Instance.Post(o=>action(), null);
}
}
}
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\..\..\Unity\Assets\Model\Base\OneThreadSynchronizationContext.cs">
<Link>OneThreadSynchronizationContext.cs</Link>
</Compile>
</ItemGroup>
</Project>
using System;
using System.Threading;
using System.Threading.Tasks;
using ETModel;
namespace Example2_2
{
class Program
{
private static int loopCount = 0;
static void Main(string[] args)
{
OneThreadSynchronizationContext _ = OneThreadSynchronizationContext.Instance;
Console.WriteLine($"主线程: {Thread.CurrentThread.ManagedThreadId}");
Crontine();
while (true)
{
OneThreadSynchronizationContext.Instance.Update();
Thread.Sleep(1);
++loopCount;
if (loopCount % 10000 == 0)
{
Console.WriteLine($"loop count: {loopCount}");
}
}
}
private static async void Crontine()
{
await WaitTimeAsync(5000);
Console.WriteLine($"当前线程: {Thread.CurrentThread.ManagedThreadId}, WaitTimeAsync finsih loopCount的值是: {loopCount}");
await WaitTimeAsync(4000);
Console.WriteLine($"当前线程: {Thread.CurrentThread.ManagedThreadId}, WaitTimeAsync finsih loopCount的值是: {loopCount}");
await WaitTimeAsync(3000);
Console.WriteLine($"当前线程: {Thread.CurrentThread.ManagedThreadId}, WaitTimeAsync finsih loopCount的值是: {loopCount}");
}
private static Task WaitTimeAsync(int waitTime)
{
TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();
Thread thread = new Thread(()=>WaitTime(waitTime, tcs));
thread.Start();
return tcs.Task;
}
/// <summary>
/// 在另外的线程等待
/// </summary>
private static void WaitTime(int waitTime, TaskCompletionSource<bool> tcs)
{
Thread.Sleep(waitTime);
// 将tcs扔回主线程执行
OneThreadSynchronizationContext.Instance.Post(o=>tcs.SetResult(true), null);
}
}
}
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\..\..\Unity\Assets\Model\Base\OneThreadSynchronizationContext.cs">
<Link>OneThreadSynchronizationContext.cs</Link>
</Compile>
</ItemGroup>
</Project>
using System;
using System.Threading;
using System.Threading.Tasks;
using ETModel;
namespace Example2_2_2
{
class Program
{
private static int loopCount = 0;
static void Main(string[] args)
{
SynchronizationContext.SetSynchronizationContext(OneThreadSynchronizationContext.Instance);
Console.WriteLine($"主线程: {Thread.CurrentThread.ManagedThreadId}");
Crontine();
while (true)
{
OneThreadSynchronizationContext.Instance.Update();
Thread.Sleep(1);
++loopCount;
if (loopCount % 10000 == 0)
{
Console.WriteLine($"loop count: {loopCount}");
}
}
}
private static async void Crontine()
{
await WaitTimeAsync(5000);
Console.WriteLine($"当前线程: {Thread.CurrentThread.ManagedThreadId}, WaitTimeAsync finsih loopCount的值是: {loopCount}");
await WaitTimeAsync(4000);
Console.WriteLine($"当前线程: {Thread.CurrentThread.ManagedThreadId}, WaitTimeAsync finsih loopCount的值是: {loopCount}");
await WaitTimeAsync(3000);
Console.WriteLine($"当前线程: {Thread.CurrentThread.ManagedThreadId}, WaitTimeAsync finsih loopCount的值是: {loopCount}");
}
private static Task WaitTimeAsync(int waitTime)
{
TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();
Thread thread = new Thread(()=>WaitTime(waitTime, tcs));
thread.Start();
return tcs.Task;
}
/// <summary>
/// 在另外的线程等待
/// </summary>
private static void WaitTime(int waitTime, TaskCompletionSource<bool> tcs)
{
Thread.Sleep(waitTime);
Console.WriteLine($"SetResult线程: {Thread.CurrentThread.ManagedThreadId}");
tcs.SetResult(true);
}
}
}
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>
using System;
using System.Threading;
using System.Threading.Tasks;
namespace Example2_3
{
class Program
{
private static int loopCount = 0;
private static long time;
private static Action action;
static void Main(string[] args)
{
Console.WriteLine($"主线程: {Thread.CurrentThread.ManagedThreadId}");
Crontine();
while (true)
{
Thread.Sleep(1);
CheckTimerOut();
++loopCount;
if (loopCount % 10000 == 0)
{
Console.WriteLine($"loop count: {loopCount}");
}
}
}
private static void Crontine()
{
WaitTimeAsync(5000, WaitTimeAsyncCallback1);
}
private static void WaitTimeAsyncCallback1()
{
Console.WriteLine($"当前线程: {Thread.CurrentThread.ManagedThreadId}, WaitTimeAsync finsih loopCount的值是: {loopCount}");
WaitTimeAsync(4000, WaitTimeAsyncCallback2);
}
private static void WaitTimeAsyncCallback2()
{
Console.WriteLine($"当前线程: {Thread.CurrentThread.ManagedThreadId}, WaitTimeAsync finsih loopCount的值是: {loopCount}");
WaitTimeAsync(3000, WaitTimeAsyncCallback3);
}
private static void WaitTimeAsyncCallback3()
{
Console.WriteLine($"当前线程: {Thread.CurrentThread.ManagedThreadId}, WaitTimeAsync finsih loopCount的值是: {loopCount}");
}
private static void CheckTimerOut()
{
if (time == 0)
{
return;
}
long nowTicks = DateTime.Now.Ticks / 10000;
if (time > nowTicks)
{
return;
}
time = 0;
action.Invoke();
}
private static void WaitTimeAsync(int waitTime, Action a)
{
time = DateTime.Now.Ticks / 10000 + waitTime;
action = a;
}
}
}
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>
using System;
using System.Threading;
using System.Threading.Tasks;
namespace Example2_3_2
{
class Program
{
private static int loopCount = 0;
private static long time;
private static TaskCompletionSource<bool> tcs;
static void Main(string[] args)
{
Console.WriteLine($"主线程: {Thread.CurrentThread.ManagedThreadId}");
Crontine();
while (true)
{
Thread.Sleep(1);
CheckTimerOut();
++loopCount;
if (loopCount % 10000 == 0)
{
Console.WriteLine($"loop count: {loopCount}");
}
}
}
private static async void Crontine()
{
await WaitTimeAsync(5000);
Console.WriteLine($"当前线程: {Thread.CurrentThread.ManagedThreadId}, WaitTimeAsync finsih loopCount的值是: {loopCount}");
await WaitTimeAsync(4000);
Console.WriteLine($"当前线程: {Thread.CurrentThread.ManagedThreadId}, WaitTimeAsync finsih loopCount的值是: {loopCount}");
await WaitTimeAsync(3000);
Console.WriteLine($"当前线程: {Thread.CurrentThread.ManagedThreadId}, WaitTimeAsync finsih loopCount的值是: {loopCount}");
}
private static void CheckTimerOut()
{
if (time == 0)
{
return;
}
long nowTicks = DateTime.Now.Ticks / 10000;
if (time > nowTicks)
{
return;
}
time = 0;
tcs.SetResult(true);
}
private static Task WaitTimeAsync(int waitTime)
{
TaskCompletionSource<bool> t = new TaskCompletionSource<bool>();
time = DateTime.Now.Ticks / 10000 + waitTime;
tcs = t;
return t.Task;
}
}
}
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Server\Model\Server.Model.csproj" />
<ProjectReference Include="..\..\..\Server\ThirdParty\MongoDBDriver\MongoDB.Bson\MongoDB.Bson.csproj" />
</ItemGroup>
</Project>
using System;
using System.IO;
using ETModel;
using MongoDB.Bson;
using MongoDB.Bson.IO;
using MongoDB.Bson.Serialization;
namespace Example3_5
{
class Program
{
static void Main(string[] args)
{
Player player1 = new Player() { Id = 1 };
string json = player1.ToJson();
Console.WriteLine($"player1 to json: {json}");
byte[] bson = player1.ToBson();
Console.WriteLine($"player1 to bson: {bson.ToHex()}");
// // player1 to json: { "_id" : NumberLong(1), "C" : [], "Account" : null, "UnitId" : NumberLong(0) }
// 反序列化json
Player player11 = BsonSerializer.Deserialize<Player>(json);
Console.WriteLine($"player11 to json: {player11.ToJson()}");
// 反序列化bson
using (MemoryStream memoryStream = new MemoryStream(bson))
{
Player player12 = (Player) BsonSerializer.Deserialize(memoryStream, typeof (Player));
Console.WriteLine($"player12 to json: {player12.ToJson()}");
}
// 使用标准json
Console.WriteLine($"player to Strict json: {player1.ToJson(new JsonWriterSettings() {OutputMode = JsonOutputMode.Strict})}");
// player1 to Strict json: { "_id" : 1, "C" : [], "Account" : null, "UnitId" : 0 }
}
}
}
\ No newline at end of file
......@@ -39,20 +39,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MongoDB.Driver.Core", "Serv
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MongoDB.Driver.GridFS", "Server\ThirdParty\MongoDBDriver\MongoDB.Driver.GridFS\MongoDB.Driver.GridFS.csproj", "{2ACC29FB-55CD-4307-B1D1-CC3922BC2CE7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Book", "Book", "{BB93F5A1-C87D-4C69-8C9D-45338C186E01}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Example2_1", "Book\Example\Example2_1\Example2_1.csproj", "{ED41FEC0-492D-4708-AE43-131B8E2463BD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Example2_2", "Book\Example\Example2_2\Example2_2.csproj", "{5BB1E6A2-A2AD-4F58-88A2-11C366464BF2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Example2_2_2", "Book\Example\Example2_2_2\Example2_2_2.csproj", "{472BEADB-963F-4D55-BC64-C20643A6D4DC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Example2_3", "Book\Example\Example2_3\Example2_3.csproj", "{893271BA-8471-4E60-B1A8-11F5D0C67191}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Example2_3_2", "Book\Example\Example2_3_2\Example2_3_2.csproj", "{A4D185F9-C446-47D5-9250-A741B996E349}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Example3_5", "Book\Example\Example3_5\Example3_5.csproj", "{65474CD4-F380-4F14-AC5A-F274E9D1BD8B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
......@@ -219,78 +205,6 @@ Global
{2ACC29FB-55CD-4307-B1D1-CC3922BC2CE7}.Release|x64.Build.0 = Release|Any CPU
{2ACC29FB-55CD-4307-B1D1-CC3922BC2CE7}.Release|x86.ActiveCfg = Release|Any CPU
{2ACC29FB-55CD-4307-B1D1-CC3922BC2CE7}.Release|x86.Build.0 = Release|Any CPU
{ED41FEC0-492D-4708-AE43-131B8E2463BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ED41FEC0-492D-4708-AE43-131B8E2463BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ED41FEC0-492D-4708-AE43-131B8E2463BD}.Debug|x64.ActiveCfg = Debug|Any CPU
{ED41FEC0-492D-4708-AE43-131B8E2463BD}.Debug|x64.Build.0 = Debug|Any CPU
{ED41FEC0-492D-4708-AE43-131B8E2463BD}.Debug|x86.ActiveCfg = Debug|Any CPU
{ED41FEC0-492D-4708-AE43-131B8E2463BD}.Debug|x86.Build.0 = Debug|Any CPU
{ED41FEC0-492D-4708-AE43-131B8E2463BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ED41FEC0-492D-4708-AE43-131B8E2463BD}.Release|Any CPU.Build.0 = Release|Any CPU
{ED41FEC0-492D-4708-AE43-131B8E2463BD}.Release|x64.ActiveCfg = Release|Any CPU
{ED41FEC0-492D-4708-AE43-131B8E2463BD}.Release|x64.Build.0 = Release|Any CPU
{ED41FEC0-492D-4708-AE43-131B8E2463BD}.Release|x86.ActiveCfg = Release|Any CPU
{ED41FEC0-492D-4708-AE43-131B8E2463BD}.Release|x86.Build.0 = Release|Any CPU
{5BB1E6A2-A2AD-4F58-88A2-11C366464BF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5BB1E6A2-A2AD-4F58-88A2-11C366464BF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5BB1E6A2-A2AD-4F58-88A2-11C366464BF2}.Debug|x64.ActiveCfg = Debug|Any CPU
{5BB1E6A2-A2AD-4F58-88A2-11C366464BF2}.Debug|x64.Build.0 = Debug|Any CPU
{5BB1E6A2-A2AD-4F58-88A2-11C366464BF2}.Debug|x86.ActiveCfg = Debug|Any CPU
{5BB1E6A2-A2AD-4F58-88A2-11C366464BF2}.Debug|x86.Build.0 = Debug|Any CPU
{5BB1E6A2-A2AD-4F58-88A2-11C366464BF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5BB1E6A2-A2AD-4F58-88A2-11C366464BF2}.Release|Any CPU.Build.0 = Release|Any CPU
{5BB1E6A2-A2AD-4F58-88A2-11C366464BF2}.Release|x64.ActiveCfg = Release|Any CPU
{5BB1E6A2-A2AD-4F58-88A2-11C366464BF2}.Release|x64.Build.0 = Release|Any CPU
{5BB1E6A2-A2AD-4F58-88A2-11C366464BF2}.Release|x86.ActiveCfg = Release|Any CPU
{5BB1E6A2-A2AD-4F58-88A2-11C366464BF2}.Release|x86.Build.0 = Release|Any CPU
{472BEADB-963F-4D55-BC64-C20643A6D4DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{472BEADB-963F-4D55-BC64-C20643A6D4DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{472BEADB-963F-4D55-BC64-C20643A6D4DC}.Debug|x64.ActiveCfg = Debug|Any CPU
{472BEADB-963F-4D55-BC64-C20643A6D4DC}.Debug|x64.Build.0 = Debug|Any CPU
{472BEADB-963F-4D55-BC64-C20643A6D4DC}.Debug|x86.ActiveCfg = Debug|Any CPU
{472BEADB-963F-4D55-BC64-C20643A6D4DC}.Debug|x86.Build.0 = Debug|Any CPU
{472BEADB-963F-4D55-BC64-C20643A6D4DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{472BEADB-963F-4D55-BC64-C20643A6D4DC}.Release|Any CPU.Build.0 = Release|Any CPU
{472BEADB-963F-4D55-BC64-C20643A6D4DC}.Release|x64.ActiveCfg = Release|Any CPU
{472BEADB-963F-4D55-BC64-C20643A6D4DC}.Release|x64.Build.0 = Release|Any CPU
{472BEADB-963F-4D55-BC64-C20643A6D4DC}.Release|x86.ActiveCfg = Release|Any CPU
{472BEADB-963F-4D55-BC64-C20643A6D4DC}.Release|x86.Build.0 = Release|Any CPU
{893271BA-8471-4E60-B1A8-11F5D0C67191}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{893271BA-8471-4E60-B1A8-11F5D0C67191}.Debug|Any CPU.Build.0 = Debug|Any CPU
{893271BA-8471-4E60-B1A8-11F5D0C67191}.Debug|x64.ActiveCfg = Debug|Any CPU
{893271BA-8471-4E60-B1A8-11F5D0C67191}.Debug|x64.Build.0 = Debug|Any CPU
{893271BA-8471-4E60-B1A8-11F5D0C67191}.Debug|x86.ActiveCfg = Debug|Any CPU
{893271BA-8471-4E60-B1A8-11F5D0C67191}.Debug|x86.Build.0 = Debug|Any CPU
{893271BA-8471-4E60-B1A8-11F5D0C67191}.Release|Any CPU.ActiveCfg = Release|Any CPU
{893271BA-8471-4E60-B1A8-11F5D0C67191}.Release|Any CPU.Build.0 = Release|Any CPU
{893271BA-8471-4E60-B1A8-11F5D0C67191}.Release|x64.ActiveCfg = Release|Any CPU
{893271BA-8471-4E60-B1A8-11F5D0C67191}.Release|x64.Build.0 = Release|Any CPU
{893271BA-8471-4E60-B1A8-11F5D0C67191}.Release|x86.ActiveCfg = Release|Any CPU
{893271BA-8471-4E60-B1A8-11F5D0C67191}.Release|x86.Build.0 = Release|Any CPU
{A4D185F9-C446-47D5-9250-A741B996E349}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A4D185F9-C446-47D5-9250-A741B996E349}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A4D185F9-C446-47D5-9250-A741B996E349}.Debug|x64.ActiveCfg = Debug|Any CPU
{A4D185F9-C446-47D5-9250-A741B996E349}.Debug|x64.Build.0 = Debug|Any CPU
{A4D185F9-C446-47D5-9250-A741B996E349}.Debug|x86.ActiveCfg = Debug|Any CPU
{A4D185F9-C446-47D5-9250-A741B996E349}.Debug|x86.Build.0 = Debug|Any CPU
{A4D185F9-C446-47D5-9250-A741B996E349}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A4D185F9-C446-47D5-9250-A741B996E349}.Release|Any CPU.Build.0 = Release|Any CPU
{A4D185F9-C446-47D5-9250-A741B996E349}.Release|x64.ActiveCfg = Release|Any CPU
{A4D185F9-C446-47D5-9250-A741B996E349}.Release|x64.Build.0 = Release|Any CPU
{A4D185F9-C446-47D5-9250-A741B996E349}.Release|x86.ActiveCfg = Release|Any CPU
{A4D185F9-C446-47D5-9250-A741B996E349}.Release|x86.Build.0 = Release|Any CPU
{65474CD4-F380-4F14-AC5A-F274E9D1BD8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{65474CD4-F380-4F14-AC5A-F274E9D1BD8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{65474CD4-F380-4F14-AC5A-F274E9D1BD8B}.Debug|x64.ActiveCfg = Debug|Any CPU
{65474CD4-F380-4F14-AC5A-F274E9D1BD8B}.Debug|x64.Build.0 = Debug|Any CPU
{65474CD4-F380-4F14-AC5A-F274E9D1BD8B}.Debug|x86.ActiveCfg = Debug|Any CPU
{65474CD4-F380-4F14-AC5A-F274E9D1BD8B}.Debug|x86.Build.0 = Debug|Any CPU
{65474CD4-F380-4F14-AC5A-F274E9D1BD8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65474CD4-F380-4F14-AC5A-F274E9D1BD8B}.Release|Any CPU.Build.0 = Release|Any CPU
{65474CD4-F380-4F14-AC5A-F274E9D1BD8B}.Release|x64.ActiveCfg = Release|Any CPU
{65474CD4-F380-4F14-AC5A-F274E9D1BD8B}.Release|x64.Build.0 = Release|Any CPU
{65474CD4-F380-4F14-AC5A-F274E9D1BD8B}.Release|x86.ActiveCfg = Release|Any CPU
{65474CD4-F380-4F14-AC5A-F274E9D1BD8B}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......@@ -311,12 +225,6 @@ Global
{B91E7D43-CCF1-49FC-ACF5-1C88A1C81FA7} = {14963D84-2A63-48CF-AE13-DCF71F1E13A0}
{AAF14EDB-BB72-42A9-80AA-3E0E113AC4CA} = {14963D84-2A63-48CF-AE13-DCF71F1E13A0}
{2ACC29FB-55CD-4307-B1D1-CC3922BC2CE7} = {14963D84-2A63-48CF-AE13-DCF71F1E13A0}
{ED41FEC0-492D-4708-AE43-131B8E2463BD} = {BB93F5A1-C87D-4C69-8C9D-45338C186E01}
{5BB1E6A2-A2AD-4F58-88A2-11C366464BF2} = {BB93F5A1-C87D-4C69-8C9D-45338C186E01}
{472BEADB-963F-4D55-BC64-C20643A6D4DC} = {BB93F5A1-C87D-4C69-8C9D-45338C186E01}
{893271BA-8471-4E60-B1A8-11F5D0C67191} = {BB93F5A1-C87D-4C69-8C9D-45338C186E01}
{A4D185F9-C446-47D5-9250-A741B996E349} = {BB93F5A1-C87D-4C69-8C9D-45338C186E01}
{65474CD4-F380-4F14-AC5A-F274E9D1BD8B} = {BB93F5A1-C87D-4C69-8C9D-45338C186E01}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {EABC01E3-3EB5-47EF-B46E-AAD8BB3585F1}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册