<?xml version="1.0" encoding="utf-8"?>
<Project>
  <!-- Note: We cannot use the recommended style of specifying <Project Sdk=...> because we need
       to set BaseIntermediateOutputPath and BaseOutputPath before the SDK props are imported. -->
  <PropertyGroup>
    <BaseIntermediateOutputPath>obj.netcore\</BaseIntermediateOutputPath>
    <BaseOutputPath>bin.netcore\</BaseOutputPath>
  </PropertyGroup>

  <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
  
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFrameworks>netcoreapp3.1;net5.0-windows</TargetFrameworks>
    <TargetFrameworks Condition="'$(VisualStudioVersion)'=='17.0'">$(TargetFrameworks);net6.0-windows</TargetFrameworks>
    <RootNamespace>CefSharp.MinimalExample.OffScreen</RootNamespace>
    <ApplicationManifest>app.manifest</ApplicationManifest>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <Platforms>x86;x64;AnyCPU</Platforms>
    <!--
        Run on a newer version of .Net if the specified version (.Net Core 3.1) is not installed
        https://github.com/dotnet/docs/issues/12237
        -->
    <RollForward>Major</RollForward>
    <StartupObject>CefSharp.MinimalExample.OffScreen.Program</StartupObject>
  </PropertyGroup>

  <!--
  .Net 5.0 Publish Settings for PublishSingleFile
  https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file
  Defaults differ compared to .Net Core 3.1
  -->
  <PropertyGroup Condition="'$(TargetFramework)' == 'net5.0-windows' AND '$(PublishSingleFile)' == 'true'">
    <!-- Extract all files to disk at runtime -->
    <IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>
    <!-- Include our native files in the resulting exe -->
    <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
    <StartupObject>CefSharp.MinimalExample.OffScreen.ProgramPublishSingleFile</StartupObject>
  </PropertyGroup>

  <PropertyGroup Condition="'$(PlatformTarget)' == 'x86'">
    <RuntimeIdentifier Condition="'$(RuntimeIdentifier)' == ''">win-x86</RuntimeIdentifier>
    <SelfContained Condition="'$(SelfContained)' == ''">false</SelfContained>
  </PropertyGroup>

  <PropertyGroup Condition="'$(PlatformTarget)' == 'x64'">
    <RuntimeIdentifier Condition="'$(RuntimeIdentifier)' == ''">win-x64</RuntimeIdentifier>
    <SelfContained Condition="'$(SelfContained)' == ''">false</SelfContained>
  </PropertyGroup>
  
  <ItemGroup>
    <Compile Remove="bin\**" />
    <Compile Remove="obj\**" />
    <EmbeddedResource Remove="bin\**" />
    <EmbeddedResource Remove="obj\**" />
    <None Remove="bin\**" />
    <None Remove="obj\**" />
  </ItemGroup>
  
  <ItemGroup>
    <None Remove="app.config" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="CefSharp.OffScreen.NetCore" Version="107.1.120" />
  </ItemGroup>

  <ItemGroup>
    <None Update="crash_reporter.cfg">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>

  <Target Name="CefSharpAfterBuildDebug" AfterTargets="AfterBuild">
    <CallTarget Targets="CefSharpAfterBuildDiagnostic" />
  </Target>
  
  <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
</Project>