Files
MBN_STOCK_WEBVIEW/src/MBN_STOCK_WEBVIEW.LegacyParityApp/MBN_STOCK_WEBVIEW.LegacyParityApp.csproj

285 lines
18 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<OutputType>WinExe</OutputType>
<UseWinUI>true</UseWinUI>
<EnableMsixTooling>true</EnableMsixTooling>
<Nullable>enable</Nullable>
<LangVersion>latest</LangVersion>
<ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>MBN_STOCK_WEBVIEW.LegacyParityApp</RootNamespace>
<AssemblyName>MBN_STOCK_WEBVIEW.LegacyParityApp</AssemblyName>
<UseRidGraph>true</UseRidGraph>
<Platforms>x64</Platforms>
<PlatformTarget>x64</PlatformTarget>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<RuntimeIdentifiers>win-x64</RuntimeIdentifiers>
<ApplicationManifest>app.manifest</ApplicationManifest>
<ApplicationIcon>..\..\Assets\AppIcon.ico</ApplicationIcon>
<PublishTrimmed>false</PublishTrimmed>
<PublishReadyToRun>false</PublishReadyToRun>
<ApplicationDisplayVersion>0.1.0</ApplicationDisplayVersion>
<ApplicationVersion>1</ApplicationVersion>
<Version>0.1.0</Version>
<!--
Keep the legacy runtime assets outside this repository while reproducing the
original executable-folder layout. A fresh source checkout builds in safe
source-only DryRun mode when the sibling runtime tree is absent. Supplying an
explicit root or creating a Release MSIX makes the assets required unless the
caller explicitly selects Auto mode:
/p:LegacyRuntimeSourceRoot="D:\path\to\MBN_STOCK_N\bin\Debug"
/p:LegacyRuntimeAssetsMode=Auto
-->
<LegacyRuntimeSourceRootWasSpecified
Condition="'$(LegacyRuntimeSourceRoot)' != ''">true</LegacyRuntimeSourceRootWasSpecified>
<LegacyRuntimeSourceRoot Condition="'$(LegacyRuntimeSourceRoot)' == ''">$(MSBuildProjectDirectory)\..\..\..\MBN_STOCK_N\MBN_STOCK_N\bin\Debug</LegacyRuntimeSourceRoot>
<LegacyRuntimeSourceRoot>$([System.IO.Path]::GetFullPath('$(LegacyRuntimeSourceRoot)'))</LegacyRuntimeSourceRoot>
<LegacyRuntimeAssetsMode
Condition="'$(LegacyRuntimeAssetsMode)' == '' and
('$(LegacyRuntimeSourceRootWasSpecified)' == 'true' or
('$(Configuration)' == 'Release' and
('$(GenerateAppxPackageOnBuild)' == 'true' or
'$(PublishAppxPackage)' == 'true')))">Required</LegacyRuntimeAssetsMode>
<LegacyRuntimeAssetsMode
Condition="'$(LegacyRuntimeAssetsMode)' == ''">Auto</LegacyRuntimeAssetsMode>
<LegacyRuntimeAssetsEnabled
Condition="Exists('$(LegacyRuntimeSourceRoot)')">true</LegacyRuntimeAssetsEnabled>
<LegacyRuntimeAssetsEnabled
Condition="'$(LegacyRuntimeAssetsEnabled)' == ''">false</LegacyRuntimeAssetsEnabled>
<!--
Never share an executable directory with a previous full-runtime build.
Otherwise omitted Cuts/Res (including the local DB INI) could remain stale
and be consumed by a nominal source-only launch.
-->
<BaseOutputPath
Condition="'$(LegacyRuntimeAssetsEnabled)' != 'true'">bin\SourceOnly\</BaseOutputPath>
<IntermediateOutputPath
Condition="'$(LegacyRuntimeAssetsEnabled)' != 'true'">obj\SourceOnly\$(Platform)\$(Configuration)\</IntermediateOutputPath>
<DefineConstants
Condition="'$(LegacyRuntimeAssetsEnabled)' != 'true'">$(DefineConstants);SOURCE_ONLY_RUNTIME</DefineConstants>
<LegacyRuntimeAssetsValidationEnabled
Condition="'$(LegacyRuntimeAssetsMode)' == 'Required' or
'$(LegacyRuntimeAssetsEnabled)' == 'true'">true</LegacyRuntimeAssetsValidationEnabled>
<LegacyRuntimeAssetsValidationEnabled
Condition="'$(LegacyRuntimeAssetsValidationEnabled)' == ''">false</LegacyRuntimeAssetsValidationEnabled>
<LegacyCutsSourceRoot>$(LegacyRuntimeSourceRoot)\Cuts</LegacyCutsSourceRoot>
<LegacyResSourceRoot>$(LegacyRuntimeSourceRoot)\Res</LegacyResSourceRoot>
</PropertyGroup>
<ItemGroup>
<!-- Closed runtime contract: every active alias and non-external scene asset must exist. -->
<LegacyRequiredScene Include="5001;N5001;5006;5011;5016;50160;5023;5024;5025;5026;5029;8018;8032;5032;5037;5074;5076;5077;5078;5079;5080;5081;5082;5083;5084;5085;5086;50860;5087;5088;6001;6067;8001;8002;8003;8035;8061;8040;8046;8051;8056;8067;5068;5070;5072" />
<LegacyRequiredBuiltInAsset Include="images\주유기merge.png;images\35752913_l.jpg;Images\그림_빨강.png;Images\그림_검정.png;Images\그림_파랑.png;Images\프리마켓.png;Images\애프터마켓.png;Images\KRX.png;Images\NXT.png" />
</ItemGroup>
<ItemGroup Condition="'$(LegacyRuntimeAssetsEnabled)' == 'true'">
<!-- Explicit allowlist: these legacy Res assets contain UI/menu data only. -->
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\a.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\aa.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\dot.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\Find_16x16.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\Find_32x32.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\green.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\Grow.bmp" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\logo.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\MmoneyCoder.ico" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\MoveDown_16x16.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\MoveUp_16x16.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\P.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\pie.bmp" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\Preview.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\pro#00083.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\profit.bmp" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\red.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\sample_1.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\sell.bmp" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\setup.ini" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\t.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\VRIPNG.png" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\기타.ini" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\업종.ini" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\업종_코스닥.ini" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\업종_코스피.ini" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\종목.ini" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\종목_0111.ini" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\종목비교.ini" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\지수.ini" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\지수_0318.ini" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\지수_250401.ini" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\해외.ini" />
<LegacyPackagedResAsset Include="$(LegacyResSourceRoot)\환율.ini" />
<!--
Same-origin GraphE previews are a second, closed projection of four public
bitmap assets. Never map the complete Res directory into WebView2: an
operator-selected legacy directory can contain credential-bearing
MmoneyCoder.ini.
-->
<LegacyFinancialPreviewAsset Include="$(LegacyResSourceRoot)\pie.bmp" />
<LegacyFinancialPreviewAsset Include="$(LegacyResSourceRoot)\Grow.bmp" />
<LegacyFinancialPreviewAsset Include="$(LegacyResSourceRoot)\sell.bmp" />
<LegacyFinancialPreviewAsset Include="$(LegacyResSourceRoot)\profit.bmp" />
<!-- Official legacy wordmark, projected into the trusted Web root without a remote dependency. -->
<LegacyBrandAsset Include="$(LegacyResSourceRoot)\logo.png" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\LegacySceneRuntimeFactory.cs"
Link="Runtime\LegacySceneRuntimeFactory.cs" />
<Content Include="..\..\Assets\LockScreenLogo.scale-200.png" Link="Assets\LockScreenLogo.scale-200.png" />
<Content Include="..\..\Assets\AppIcon.ico" Link="Assets\AppIcon.ico">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="..\..\Assets\SplashScreen.scale-200.png" Link="Assets\SplashScreen.scale-200.png" />
<Content Include="..\..\Assets\StartupHero.png" Link="Assets\StartupHero.png" />
<Content Include="..\..\Assets\Square150x150Logo.scale-200.png" Link="Assets\Square150x150Logo.scale-200.png" />
<Content Include="..\..\Assets\Square44x44Logo.scale-200.png" Link="Assets\Square44x44Logo.scale-200.png" />
<Content Include="..\..\Assets\Square44x44Logo.targetsize-16_altform-unplated.png" Link="Assets\Square44x44Logo.targetsize-16_altform-unplated.png" />
<Content Include="..\..\Assets\Square44x44Logo.targetsize-24_altform-unplated.png" Link="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
<Content Include="..\..\Assets\Square44x44Logo.targetsize-32_altform-unplated.png" Link="Assets\Square44x44Logo.targetsize-32_altform-unplated.png" />
<Content Include="..\..\Assets\Square44x44Logo.targetsize-48_altform-unplated.png" Link="Assets\Square44x44Logo.targetsize-48_altform-unplated.png" />
<Content Include="..\..\Assets\Square44x44Logo.targetsize-256_altform-unplated.png" Link="Assets\Square44x44Logo.targetsize-256_altform-unplated.png" />
<Content Include="..\..\Assets\StoreLogo.png" Link="Assets\StoreLogo.png" />
<Content Include="..\..\Assets\Wide310x150Logo.scale-200.png" Link="Assets\Wide310x150Logo.scale-200.png" />
<Content Include="Web\**\*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="$(LegacyCutsSourceRoot)\**\*"
Condition="'$(LegacyRuntimeAssetsEnabled)' == 'true'">
<Link>Cuts\%(RecursiveDir)%(Filename)%(Extension)</Link>
<TargetPath>Cuts\%(RecursiveDir)%(Filename)%(Extension)</TargetPath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="@(LegacyPackagedResAsset)"
Condition="'$(LegacyRuntimeAssetsEnabled)' == 'true'">
<Link>Res\%(Filename)%(Extension)</Link>
<TargetPath>Res\%(Filename)%(Extension)</TargetPath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="@(LegacyFinancialPreviewAsset)"
Condition="'$(LegacyRuntimeAssetsEnabled)' == 'true'">
<Link>Web\Previews\%(Filename)%(Extension)</Link>
<TargetPath>Web\Previews\%(Filename)%(Extension)</TargetPath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="@(LegacyBrandAsset)"
Condition="'$(LegacyRuntimeAssetsEnabled)' == 'true'">
<Link>Web\Brand\%(Filename)%(Extension)</Link>
<TargetPath>Web\Brand\%(Filename)%(Extension)</TargetPath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<!--
The active legacy DB INI contains credentials. It is available beside the
executable for local F5/unpackaged development only and is never MSIX Content.
Historical copies, backups, archives and afiedt.buf.txt are not included at all.
-->
<Manifest Include="$(ApplicationManifest)" />
</ItemGroup>
<Target Name="ValidateLegacyRuntimeAssets" BeforeTargets="PrepareForBuild">
<Error Condition="'$(LegacyRuntimeAssetsMode)' != 'Auto' and
'$(LegacyRuntimeAssetsMode)' != 'Required'"
Text="LegacyRuntimeAssetsMode must be Auto or Required." />
<Message Condition="'$(LegacyRuntimeAssetsMode)' == 'Auto' and
'$(LegacyRuntimeAssetsEnabled)' != 'true'"
Importance="high"
Text="Legacy runtime assets were not found. Building the safe source-only DryRun app. Full runtime use requires a Required build with the approved external root." />
<Error Condition="'$(LegacyRuntimeAssetsValidationEnabled)' == 'true' and
!Exists('$(LegacyRuntimeSourceRoot)')"
Text="Legacy runtime source root was not found: $(LegacyRuntimeSourceRoot). Set /p:LegacyRuntimeSourceRoot to the read-only MBN_STOCK_N bin\Debug directory, or use /p:LegacyRuntimeAssetsMode=Auto for a source-only DryRun build." />
<Error Condition="'$(LegacyRuntimeAssetsValidationEnabled)' == 'true' and
!Exists('$(LegacyCutsSourceRoot)')"
Text="Legacy Cuts source directory was not found: $(LegacyCutsSourceRoot)." />
<Error Condition="'$(LegacyRuntimeAssetsValidationEnabled)' == 'true' and
!Exists('$(LegacyResSourceRoot)')"
Text="Legacy Res source directory was not found: $(LegacyResSourceRoot)." />
<Error Condition="'$(LegacyRuntimeAssetsValidationEnabled)' == 'true' and
(!Exists('$(LegacyResSourceRoot)\pie.bmp') or
!Exists('$(LegacyResSourceRoot)\Grow.bmp') or
!Exists('$(LegacyResSourceRoot)\sell.bmp') or
!Exists('$(LegacyResSourceRoot)\profit.bmp'))"
Text="The four required GraphE preview bitmaps are missing from $(LegacyResSourceRoot)." />
<Error Condition="'$(LegacyRuntimeAssetsValidationEnabled)' == 'true' and
!Exists('$(LegacyResSourceRoot)\logo.png')"
Text="The required legacy brand wordmark is missing: Res\logo.png." />
<Error Condition="'$(LegacyRuntimeAssetsValidationEnabled)' == 'true' and
!Exists('$(LegacyCutsSourceRoot)\%(LegacyRequiredScene.Identity).t2s')"
Text="A required active legacy scene file is missing: Cuts\%(LegacyRequiredScene.Identity).t2s." />
<Error Condition="'$(LegacyRuntimeAssetsValidationEnabled)' == 'true' and
!Exists('$(LegacyCutsSourceRoot)\%(LegacyRequiredBuiltInAsset.Identity)')"
Text="A required built-in legacy scene asset is missing: Cuts\%(LegacyRequiredBuiltInAsset.Identity)." />
<Error Condition="'$(LegacyRuntimeAssetsValidationEnabled)' == 'true' and
!Exists('$(LegacyResSourceRoot)\종목.ini')"
Text="The required legacy stock menu file Res\종목.ini is missing from $(LegacyRuntimeSourceRoot)." />
<Error Condition="'$(LegacyRuntimeAssetsValidationEnabled)' == 'true' and
!Exists('$(LegacyResSourceRoot)\업종_코스피.ini')"
Text="The required legacy KOSPI industry menu file Res\업종_코스피.ini is missing from $(LegacyRuntimeSourceRoot)." />
<Error Condition="'$(LegacyRuntimeAssetsValidationEnabled)' == 'true' and
!Exists('$(LegacyResSourceRoot)\업종_코스닥.ini')"
Text="The required legacy KOSDAQ industry menu file Res\업종_코스닥.ini is missing from $(LegacyRuntimeSourceRoot)." />
<Error Condition="'$(LegacyRuntimeAssetsValidationEnabled)' == 'true' and
!Exists('$(LegacyResSourceRoot)\해외.ini')"
Text="The required legacy overseas menu file Res\해외.ini is missing from $(LegacyRuntimeSourceRoot)." />
<Error Condition="'$(LegacyRuntimeAssetsValidationEnabled)' == 'true' and
!Exists('$(LegacyResSourceRoot)\환율.ini')"
Text="The required legacy exchange menu file Res\환율.ini is missing from $(LegacyRuntimeSourceRoot)." />
<Error Condition="'$(LegacyRuntimeAssetsValidationEnabled)' == 'true' and
!Exists('$(LegacyResSourceRoot)\지수.ini')"
Text="The required legacy index menu file Res\지수.ini is missing from $(LegacyRuntimeSourceRoot)." />
</Target>
<!--
Database credentials are never build inputs. Full Debug, publish and MSIX
builds use the same user-only LocalAppData overlay as a clean handoff PC.
-->
<Target Name="ScrubLegacyDatabaseIniFromBuildOutput"
BeforeTargets="PrepareForBuild">
<Delete Files="$(TargetDir)Res\MmoneyCoder.ini"
Condition="Exists('$(TargetDir)Res\MmoneyCoder.ini')" />
</Target>
<Target Name="RejectLegacyDatabaseIniFromPackagePayload"
BeforeTargets="_ComputeAppxPackagePayload">
<ItemGroup>
<_ForbiddenLegacyDatabasePackagePayload Include="@(PackagingOutputs)"
Condition="'%(PackagingOutputs.Filename)%(PackagingOutputs.Extension)' == 'MmoneyCoder.ini' or
'%(PackagingOutputs.TargetPath)' == 'Res\MmoneyCoder.ini' or
'%(PackagingOutputs.TargetPath)' == 'Res/MmoneyCoder.ini'" />
</ItemGroup>
<Error Condition="'@(_ForbiddenLegacyDatabasePackagePayload)' != ''"
Text="Credential-bearing MmoneyCoder.ini must never enter an MSIX payload or package recipe at any target path." />
</Target>
<ItemGroup>
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.8.260317003" />
<PackageReference Include="Microsoft.Web.WebView2" Version="1.0.3967.48" />
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.7705" />
</ItemGroup>
<ItemGroup Condition="'$(DisableMsixProjectCapabilityAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
<ProjectCapability Include="Msix" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MBN_STOCK_WEBVIEW.LegacyApplication\MBN_STOCK_WEBVIEW.LegacyApplication.csproj" />
<ProjectReference Include="..\MBN_STOCK_WEBVIEW.LegacyBridge\MBN_STOCK_WEBVIEW.LegacyBridge.csproj" />
<ProjectReference Include="..\MBN_STOCK_WEBVIEW.Core\MBN_STOCK_WEBVIEW.Core.csproj" />
<ProjectReference Include="..\MBN_STOCK_WEBVIEW.Infrastructure\MBN_STOCK_WEBVIEW.Infrastructure.csproj" />
<ProjectReference Include="..\MBN_STOCK_WEBVIEW.Playout\MBN_STOCK_WEBVIEW.Playout.csproj" />
</ItemGroup>
<PropertyGroup Condition="'$(DisableHasPackageAndPublishMenuAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
<HasPackageAndPublishMenu>true</HasPackageAndPublishMenu>
</PropertyGroup>
</Project>