개정판 a72d2650
-document_item과 convert_doc를 비교하여 convert_doc에 없는 데이터를 추가
Change-Id: I5dbe6dfabd3272bc47da810d93161efb2e56f00f
ConvertService/ServiceBase/DocItemCheck/App.config | ||
---|---|---|
1 |
<?xml version="1.0" encoding="utf-8"?> |
|
2 |
<configuration> |
|
3 |
<configSections> |
|
4 |
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> |
|
5 |
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> |
|
6 |
</configSections> |
|
7 |
<entityFramework> |
|
8 |
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> |
|
9 |
<providers> |
|
10 |
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> |
|
11 |
</providers> |
|
12 |
</entityFramework> |
|
13 |
</configuration> |
ConvertService/ServiceBase/DocItemCheck/DocItemCheck.csproj | ||
---|---|---|
1 |
<?xml version="1.0" encoding="utf-8"?> |
|
2 |
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|
3 |
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> |
|
4 |
<PropertyGroup> |
|
5 |
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
|
6 |
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
|
7 |
<ProjectGuid>{2F7115C0-6414-46DB-B2E5-C941099B7737}</ProjectGuid> |
|
8 |
<OutputType>Library</OutputType> |
|
9 |
<AppDesignerFolder>Properties</AppDesignerFolder> |
|
10 |
<RootNamespace>DocItemCheck</RootNamespace> |
|
11 |
<AssemblyName>DocItemCheck</AssemblyName> |
|
12 |
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> |
|
13 |
<FileAlignment>512</FileAlignment> |
|
14 |
<Deterministic>true</Deterministic> |
|
15 |
</PropertyGroup> |
|
16 |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
|
17 |
<DebugSymbols>true</DebugSymbols> |
|
18 |
<DebugType>full</DebugType> |
|
19 |
<Optimize>false</Optimize> |
|
20 |
<OutputPath>..\publish\Plugin\</OutputPath> |
|
21 |
<DefineConstants>DEBUG;TRACE</DefineConstants> |
|
22 |
<ErrorReport>prompt</ErrorReport> |
|
23 |
<WarningLevel>4</WarningLevel> |
|
24 |
</PropertyGroup> |
|
25 |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
|
26 |
<DebugType>pdbonly</DebugType> |
|
27 |
<Optimize>true</Optimize> |
|
28 |
<OutputPath>bin\Release\</OutputPath> |
|
29 |
<DefineConstants>TRACE</DefineConstants> |
|
30 |
<ErrorReport>prompt</ErrorReport> |
|
31 |
<WarningLevel>4</WarningLevel> |
|
32 |
</PropertyGroup> |
|
33 |
<ItemGroup> |
|
34 |
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> |
|
35 |
<HintPath>..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll</HintPath> |
|
36 |
</Reference> |
|
37 |
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> |
|
38 |
<HintPath>..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll</HintPath> |
|
39 |
</Reference> |
|
40 |
<Reference Include="Markus.EntityModel, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL"> |
|
41 |
<HintPath>..\packages\MarkusDatabase.1.8.0\lib\net45\Markus.EntityModel.dll</HintPath> |
|
42 |
</Reference> |
|
43 |
<Reference Include="System" /> |
|
44 |
<Reference Include="System.ComponentModel.DataAnnotations" /> |
|
45 |
<Reference Include="System.Core" /> |
|
46 |
<Reference Include="System.Xml.Linq" /> |
|
47 |
<Reference Include="System.Data.DataSetExtensions" /> |
|
48 |
<Reference Include="Microsoft.CSharp" /> |
|
49 |
<Reference Include="System.Data" /> |
|
50 |
<Reference Include="System.Net.Http" /> |
|
51 |
<Reference Include="System.Xml" /> |
|
52 |
</ItemGroup> |
|
53 |
<ItemGroup> |
|
54 |
<Compile Include="DocumentItemCheck.cs" /> |
|
55 |
<Compile Include="Properties\AssemblyInfo.cs" /> |
|
56 |
</ItemGroup> |
|
57 |
<ItemGroup> |
|
58 |
<ProjectReference Include="..\Markus.Service.Convert.IPlugin\Markus.Service.Convert.IPlugin.csproj"> |
|
59 |
<Project>{a5ba7325-379c-4ccb-b156-1704fc2175e3}</Project> |
|
60 |
<Name>Markus.Service.Convert.IPlugin</Name> |
|
61 |
</ProjectReference> |
|
62 |
<ProjectReference Include="..\Markus.Service.Extensions\Markus.Service.Extensions.csproj"> |
|
63 |
<Project>{5f983789-3e8f-4f9a-a601-138c3a83ca5f}</Project> |
|
64 |
<Name>Markus.Service.Extensions</Name> |
|
65 |
</ProjectReference> |
|
66 |
</ItemGroup> |
|
67 |
<ItemGroup> |
|
68 |
<None Include="App.config" /> |
|
69 |
<None Include="packages.config" /> |
|
70 |
</ItemGroup> |
|
71 |
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> |
|
72 |
</Project> |
ConvertService/ServiceBase/DocItemCheck/DocumentItemCheck.cs | ||
---|---|---|
1 |
using Markus.Service.Convert.Plugin; |
|
2 |
using Markus.Service.Extensions; |
|
3 |
using System; |
|
4 |
using System.Collections.Generic; |
|
5 |
using System.Data.Entity.Core.Objects; |
|
6 |
using System.Data.Entity.Infrastructure; |
|
7 |
using System.Linq; |
|
8 |
using System.Text; |
|
9 |
using System.Threading.Tasks; |
|
10 |
|
|
11 |
namespace DocItemCheck |
|
12 |
{ |
|
13 |
public class DocumentItemCheck : Markus.Service.Convert.Plugin.IPlugin |
|
14 |
{ |
|
15 |
public string Name => nameof(DocItemCheck); |
|
16 |
|
|
17 |
public string Exception { get; set; } |
|
18 |
public string gConvertID; |
|
19 |
|
|
20 |
private const string MARKUS_ConnectionString_KEY = "MARKUS_ConnectionString"; |
|
21 |
|
|
22 |
bool IPlugin.Do(string ConvertID, Dictionary<string, object> Parameters) |
|
23 |
{ |
|
24 |
bool result = true; |
|
25 |
|
|
26 |
gConvertID = ConvertID; |
|
27 |
|
|
28 |
try |
|
29 |
{ |
|
30 |
if (Parameters.Keys.Count(x => x == MARKUS_ConnectionString_KEY) > 0) |
|
31 |
{ |
|
32 |
string connectionString = Parameters[MARKUS_ConnectionString_KEY].ToString(); |
|
33 |
|
|
34 |
using (var entities = new Markus.EntityModel.MarkusModel(Markus.Service.Extensions.Encrypt.AESEncrypter.Decrypt(connectionString))) |
|
35 |
{ |
|
36 |
string sql = @"SELECT " + |
|
37 |
" doc.PROJECT_NO as PROJECT_NO " + |
|
38 |
" ,doc.DOCUMENT_ID as DOCUMENT_ID " + |
|
39 |
" ,doc.ORIGINAL_FILE as ORIGINAL_FILE " + |
|
40 |
" FROM MarkusModel.DOCUMENT_ITEM as doc " + |
|
41 |
" LEFT OUTER JOIN MarkusModel.CONVERTER_DOC as con " + |
|
42 |
" ON doc.DOCUMENT_ID = con.DOCUMENT_ID and doc.PROJECT_NO = con.PROJECT_NO " + |
|
43 |
" where con.DOCUMENT_ID is null"; |
|
44 |
|
|
45 |
var docItems = (entities as IObjectContextAdapter).ObjectContext.CreateQuery<System.Data.Common.DbDataRecord>(sql); |
|
46 |
|
|
47 |
if (docItems.Count() > 0) |
|
48 |
{ |
|
49 |
foreach (var dataRecord in docItems) |
|
50 |
{ |
|
51 |
string projctNo = dataRecord["PROJECT_NO"]?.ToString().Trim(); |
|
52 |
string documentId = dataRecord["DOCUMENT_ID"]?.ToString().Trim(); |
|
53 |
string originalUrl = dataRecord["ORIGINAL_FILE"]?.ToString(); |
|
54 |
|
|
55 |
if (!string.IsNullOrWhiteSpace(projctNo) && !string.IsNullOrWhiteSpace(documentId) && !string.IsNullOrWhiteSpace(originalUrl)) |
|
56 |
{ |
|
57 |
string convertId = GuidExtension.shortGuid(); |
|
58 |
|
|
59 |
var param = new [] { |
|
60 |
new System.Data.SqlClient.SqlParameter("ID",convertId), |
|
61 |
new System.Data.SqlClient.SqlParameter("PROJECT_NO",projctNo), |
|
62 |
new System.Data.SqlClient.SqlParameter("DOCUMENT_URL",originalUrl), |
|
63 |
new System.Data.SqlClient.SqlParameter( "DOCUMENT_ID",documentId) |
|
64 |
}; |
|
65 |
|
|
66 |
(entities as IObjectContextAdapter).ObjectContext.ExecuteStoreQuery<object>("SELECT_CONVERT_INSERT @ID, @PROJECT_NO, @DOCUMENT_URL , @DOCUMENT_ID", param); |
|
67 |
} |
|
68 |
} |
|
69 |
} |
|
70 |
} |
|
71 |
} |
|
72 |
else |
|
73 |
{ |
|
74 |
this.Exception = "MARKUS_ConnectionString SECTION Not Found"; |
|
75 |
} |
|
76 |
} |
|
77 |
|
|
78 |
catch (Exception ex) |
|
79 |
{ |
|
80 |
this.Exception = ex.ToString(); |
|
81 |
result = false; |
|
82 |
} |
|
83 |
|
|
84 |
return result; |
|
85 |
} |
|
86 |
} |
|
87 |
} |
ConvertService/ServiceBase/DocItemCheck/Properties/AssemblyInfo.cs | ||
---|---|---|
1 |
using System.Reflection; |
|
2 |
using System.Runtime.CompilerServices; |
|
3 |
using System.Runtime.InteropServices; |
|
4 |
|
|
5 |
// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 |
|
6 |
// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 |
|
7 |
// 이러한 특성 값을 변경하세요. |
|
8 |
[assembly: AssemblyTitle("DocItemCheck")] |
|
9 |
[assembly: AssemblyDescription("")] |
|
10 |
[assembly: AssemblyConfiguration("")] |
|
11 |
[assembly: AssemblyCompany("")] |
|
12 |
[assembly: AssemblyProduct("DocItemCheck")] |
|
13 |
[assembly: AssemblyCopyright("Copyright © 2020")] |
|
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("2f7115c0-6414-46db-b2e5-c941099b7737")] |
|
24 |
|
|
25 |
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. |
|
26 |
// |
|
27 |
// 주 버전 |
|
28 |
// 부 버전 |
|
29 |
// 빌드 번호 |
|
30 |
// 수정 버전 |
|
31 |
// |
|
32 |
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를 |
|
33 |
// 기본값으로 할 수 있습니다. |
|
34 |
// [assembly: AssemblyVersion("1.0.*")] |
|
35 |
[assembly: AssemblyVersion("1.0.0.0")] |
|
36 |
[assembly: AssemblyFileVersion("1.0.0.0")] |
ConvertService/ServiceBase/DocItemCheck/packages.config | ||
---|---|---|
1 |
<?xml version="1.0" encoding="utf-8"?> |
|
2 |
<packages> |
|
3 |
<package id="EntityFramework" version="6.2.0" targetFramework="net45" /> |
|
4 |
<package id="MarkusDatabase" version="1.8.0" targetFramework="net45" developmentDependency="true" /> |
|
5 |
</packages> |
ConvertService/ServiceBase/Markus.Service.Station/Plugin.ini | ||
---|---|---|
2 | 2 |
[PemssDocumentInfo] |
3 | 3 |
PEMSS_SERVICE = http://localhost:13009/PemssService.svc |
4 | 4 |
# remote test MARKUS_V3 |
5 |
MARKUS_ConnectionString = ScTg8MgTdbARVQXhb1K9YI3/6emjnMuODvTWZ+UnUZQ8z/Gv4TksSLRn84HTZiC5pT5Vi9KdIFiJ/icpeXrUfa2LTnWdibJ7Oz+4QcYCftqVNPaS3nbiAo67l93XLRVqCpyt4tTSgwhRhdJob48gZhx+zmvoKmAwBR/ofCam3SNjx85gHFWc+gFffVOACIGbvM940SGroUFzK85kDd7Xlg== |
|
5 |
#MARKUS_ConnectionString = ScTg8MgTdbARVQXhb1K9YI3/6emjnMuODvTWZ+UnUZQ8z/Gv4TksSLRn84HTZiC5pT5Vi9KdIFiJ/icpeXrUfa2LTnWdibJ7Oz+4QcYCftqVNPaS3nbiAo67l93XLRVqCpyt4tTSgwhRhdJob48gZhx+zmvoKmAwBR/ofCam3SNjx85gHFWc+gFffVOACIGbvM940SGroUFzK85kDd7Xlg== |
|
6 |
|
|
7 |
|
|
8 |
[DocItemCheck] |
|
9 |
#MARKUS_ConnectionString = ScTg8MgTdbARVQXhb1K9YI3/6emjnMuODvTWZ+UnUZQ8z/Gv4TksSLRn84HTZiC5/7jdSUr5EUZM30ywChLhQpD7JcUP0OmFolKm/ESAXOyQExjIscSgqZRobsvvTqCJXTB9cMiVyw40ez2n/sz6jEVUlTnXcrgyES00Kne7l1/Vxq1xlZB35sr7iyMcMkAFI6eGTZyU34DfS3t1LQu55A== |
|
10 |
|
|
11 |
#효성 |
|
12 |
MARKUS_ConnectionString = w0RfRwPwWVzkhKYSFkzqaccCbanjnTfSeig1IFc1IQ2MDThANWCNLmZqA6e2emQZqdM0l2Hsk1Ns/1Bfk6Vy+23gcbZlEDSBfSz7+eQaliiW9b2Wes1FDJ/C1Ho+35kTHGBbQk0tlIA0SWQHbR0KFo8TH5AbCyrLkjI87W6iXJVBpfI1QmTK0guIlTPnEEtCzXnXtgY9e8IHVnRIqT1PDs4tqaDsOZxfDGNNdvIpagA= |
ConvertService/ServiceBase/PlugInTest/PlugInTest.csproj | ||
---|---|---|
34 | 34 |
<PropertyGroup> |
35 | 35 |
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> |
36 | 36 |
</PropertyGroup> |
37 |
<PropertyGroup> |
|
38 |
<StartupObject>PlugInTest.Program</StartupObject> |
|
39 |
</PropertyGroup> |
|
37 | 40 |
<ItemGroup> |
38 | 41 |
<Reference Include="ConfigParser, Version=0.3.4.3, Culture=neutral, processorArchitecture=MSIL"> |
39 | 42 |
<HintPath>..\packages\Salaros.ConfigParser.0.3.4\lib\net45\ConfigParser.dll</HintPath> |
... | ... | |
67 | 70 |
<Compile Include="Program.cs" /> |
68 | 71 |
</ItemGroup> |
69 | 72 |
<ItemGroup> |
73 |
<None Include="..\Markus.Service.Station\Plugin.ini"> |
|
74 |
<Link>Plugin.ini</Link> |
|
75 |
<CopyToOutputDirectory>Always</CopyToOutputDirectory> |
|
76 |
</None> |
|
70 | 77 |
<None Include="App.config" /> |
71 | 78 |
<None Include="packages.config" /> |
72 | 79 |
</ItemGroup> |
73 | 80 |
<ItemGroup> |
81 |
<ProjectReference Include="..\DocItemCheck\DocItemCheck.csproj"> |
|
82 |
<Project>{2f7115c0-6414-46db-b2e5-c941099b7737}</Project> |
|
83 |
<Name>DocItemCheck</Name> |
|
84 |
</ProjectReference> |
|
74 | 85 |
<ProjectReference Include="..\Markus.Service.Convert.IPlugin\Markus.Service.Convert.IPlugin.csproj"> |
75 | 86 |
<Project>{a5ba7325-379c-4ccb-b156-1704fc2175e3}</Project> |
76 | 87 |
<Name>Markus.Service.Convert.IPlugin</Name> |
... | ... | |
84 | 95 |
<Name>TestDocumentInfo</Name> |
85 | 96 |
</ProjectReference> |
86 | 97 |
</ItemGroup> |
98 |
<ItemGroup> |
|
99 |
<WCFMetadata Include="Connected Services\" /> |
|
100 |
</ItemGroup> |
|
87 | 101 |
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> |
88 | 102 |
<PropertyGroup> |
89 | 103 |
<PreBuildEvent>xcopy /y /d /I "$(ProjectDir)..\publish\Plugin\*.*" "$(ProjectDir)$(OutDir)Plugin"</PreBuildEvent> |
ConvertService/ServiceBase/PlugInTest/Program.cs | ||
---|---|---|
56 | 56 |
Console.WriteLine(""); |
57 | 57 |
Console.WriteLine("Plugin Type : " + item.Name); |
58 | 58 |
|
59 |
if (item.Name == documentInfoProcess.Name) |
|
59 |
#region Docinfo Test |
|
60 |
//if (item.Name == documentInfoProcess.Name) |
|
61 |
//{ |
|
62 |
// Console.Write("Call : " + item.Name); |
|
63 |
|
|
64 |
// ((Markus.Service.Convert.Plugin.IPlugin)documentInfoProcess).Do(convertID, parameters); |
|
65 |
//} |
|
66 |
#endregion |
|
67 |
|
|
68 |
|
|
69 |
if (item.Name == "DocItemCheck") |
|
60 | 70 |
{ |
61 | 71 |
Console.Write("Call : " + item.Name); |
62 | 72 |
|
63 |
((Markus.Service.Convert.Plugin.IPlugin)documentInfoProcess).Do(convertID, parameters);
|
|
73 |
((Markus.Service.Convert.Plugin.IPlugin)item).Do(convertID, parameters);
|
|
64 | 74 |
} |
65 | 75 |
|
66 | 76 |
Console.WriteLine(""); |
ConvertService/ServiceBase/ServiceBase.sln | ||
---|---|---|
113 | 113 |
EndProject |
114 | 114 |
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlugInTest", "PlugInTest\PlugInTest.csproj", "{F344E7AE-B16E-4736-9816-4BE415418F58}" |
115 | 115 |
EndProject |
116 |
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocItemCheck", "DocItemCheck\DocItemCheck.csproj", "{2F7115C0-6414-46DB-B2E5-C941099B7737}" |
|
117 |
EndProject |
|
116 | 118 |
Global |
117 | 119 |
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
118 | 120 |
Debug|Any CPU = Debug|Any CPU |
... | ... | |
401 | 403 |
{F344E7AE-B16E-4736-9816-4BE415418F58}.Release|x64.Build.0 = Release|Any CPU |
402 | 404 |
{F344E7AE-B16E-4736-9816-4BE415418F58}.Release|x86.ActiveCfg = Release|Any CPU |
403 | 405 |
{F344E7AE-B16E-4736-9816-4BE415418F58}.Release|x86.Build.0 = Release|Any CPU |
406 |
{2F7115C0-6414-46DB-B2E5-C941099B7737}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|
407 |
{2F7115C0-6414-46DB-B2E5-C941099B7737}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|
408 |
{2F7115C0-6414-46DB-B2E5-C941099B7737}.Debug|x64.ActiveCfg = Debug|Any CPU |
|
409 |
{2F7115C0-6414-46DB-B2E5-C941099B7737}.Debug|x64.Build.0 = Debug|Any CPU |
|
410 |
{2F7115C0-6414-46DB-B2E5-C941099B7737}.Debug|x86.ActiveCfg = Debug|Any CPU |
|
411 |
{2F7115C0-6414-46DB-B2E5-C941099B7737}.Debug|x86.Build.0 = Debug|Any CPU |
|
412 |
{2F7115C0-6414-46DB-B2E5-C941099B7737}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|
413 |
{2F7115C0-6414-46DB-B2E5-C941099B7737}.Release|Any CPU.Build.0 = Release|Any CPU |
|
414 |
{2F7115C0-6414-46DB-B2E5-C941099B7737}.Release|x64.ActiveCfg = Release|Any CPU |
|
415 |
{2F7115C0-6414-46DB-B2E5-C941099B7737}.Release|x64.Build.0 = Release|Any CPU |
|
416 |
{2F7115C0-6414-46DB-B2E5-C941099B7737}.Release|x86.ActiveCfg = Release|Any CPU |
|
417 |
{2F7115C0-6414-46DB-B2E5-C941099B7737}.Release|x86.Build.0 = Release|Any CPU |
|
404 | 418 |
EndGlobalSection |
405 | 419 |
GlobalSection(SolutionProperties) = preSolution |
406 | 420 |
HideSolutionNode = FALSE |
... | ... | |
410 | 424 |
{535AA98D-063A-46A4-86D8-371F6C16C099} = {38FB29F2-1B34-49E6-873C-9E04F77F7B08} |
411 | 425 |
{8E4A5DBD-1A40-4D43-A03B-E780ED098E9D} = {38FB29F2-1B34-49E6-873C-9E04F77F7B08} |
412 | 426 |
{F344E7AE-B16E-4736-9816-4BE415418F58} = {38FB29F2-1B34-49E6-873C-9E04F77F7B08} |
427 |
{2F7115C0-6414-46DB-B2E5-C941099B7737} = {38FB29F2-1B34-49E6-873C-9E04F77F7B08} |
|
413 | 428 |
EndGlobalSection |
414 | 429 |
GlobalSection(ExtensibilityGlobals) = postSolution |
415 | 430 |
SolutionGuid = {CA1BB1E8-1969-4435-A889-37F359B6EAAE} |
내보내기 Unified diff