BUTR/Bannerlord.BLSE

View on GitHub
src/Bannerlord.LauncherEx/Bannerlord.LauncherEx.csproj

Summary

Maintainability
Test Coverage
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <LangVersion>12.0</LangVersion>
    <Nullable>enable</Nullable>
    <PlatformTarget>x64</PlatformTarget>
    <Version>1.25.0</Version>
    <BUTRCompatibilityScoreUrl>$(BANNERLORD_BUTR_COMPATIBILITY_SCORE_URL)</BUTRCompatibilityScoreUrl>
    <DebugType>portable</DebugType>
    
    <PolySharpExcludeGeneratedTypes>System.Diagnostics.CodeAnalysis.UnscopedRefAttribute</PolySharpExcludeGeneratedTypes>
    <EnableWindowsTargeting>true</EnableWindowsTargeting>

    <GameConfiguration Condition="$(GameConfiguration) == '' AND Exists('$(GameFolder)\bin\Win64_Shipping_Client')">Win64_Shipping_Client</GameConfiguration>
    <GameConfiguration Condition="$(GameConfiguration) == '' AND Exists('$(GameFolder)\bin\Gaming.Desktop.x64_Shipping_Client')">Gaming.Desktop.x64_Shipping_Client</GameConfiguration>
    
    <ILRepackTargetConfigurations>$(Configuration)</ILRepackTargetConfigurations>
    <ILRepackAllowDuplicateResources>false</ILRepackAllowDuplicateResources>
    <ILRepackMergeDebugSymbols>true</ILRepackMergeDebugSymbols>
    <ILRepackPerformInternalize>true</ILRepackPerformInternalize>
    <ILRepackCopyAttributes>false</ILRepackCopyAttributes>
  </PropertyGroup>

  <PropertyGroup Condition="$(Configuration) == 'Debug'">
    <GameVersion>1.2.0</GameVersion>
  </PropertyGroup>

  <PropertyGroup>
    <GameVersionFlat>$([System.String]::Copy('$(GameVersion)').Replace('.',''))</GameVersionFlat>
    <GameVersionConstant>v$(GameVersionFlat)</GameVersionConstant>
    <DefineConstants>$(DefineConstants);$(GameVersionConstant)</DefineConstants>
  </PropertyGroup>
  
  <PropertyGroup>
    <PackageId>Bannerlord.LauncherEx</PackageId>
    <Title>Bannerlord.LauncherEx</Title>
    <Description>Bannerlord.LauncherEx. Built for v$(GameVersion).</Description>
    <PackageLicenseExpression>MIT</PackageLicenseExpression>
    <PackageProjectUrl>https://github.com/BUTR/Bannerlord.BLSE</PackageProjectUrl>
    <PackageTags>butr bannerlord launcherex</PackageTags>
  </PropertyGroup>

  <ItemGroup>
    <EmbeddedResource Include="Resources\Brushes\**\*.xml" />
    <EmbeddedResource Include="Resources\Prefabs\**\*.xml" />
    <EmbeddedResource Include="Resources\Textures\*.png" />
    <EmbeddedResource Include="Resources\Localization\*\strings.xml" />
  </ItemGroup>

  <ItemGroup>
    <!-- BUTR.ILRepack breaks debugging -->
    <PackageReference Include="ILRepack" Version="2.0.31" PrivateAssets="all" />
    <PackageReference Include="ILRepack.FullAuto" Version="1.5.0" PrivateAssets="all" />

    <PackageReference Include="Bannerlord.ReferenceAssemblies.Core" Version="$(GameVersion).*-*" PrivateAssets="all" />

    <!-- Bannerlord.BUTR.Shared needs the package, but Bannerlord.LauncherManager provides the types already -->
    <PackageReference Include="Bannerlord.ModuleManager.Source" Version="$(BUTRModuleManagerVersion)" PrivateAssets="all" IncludeAssets="none" />
    <PackageReference Include="Bannerlord.LauncherManager" Version="$(LauncherManagerVersion)" />
    <PackageReference Include="Bannerlord.BUTR.Shared" Version="$(BUTRSharedVersion)" PrivateAssets="all" IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
    <PackageReference Include="Harmony.Extensions" Version="$(HarmonyExtensionsVersion)" PrivateAssets="all" IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
    <PackageReference Include="Bannerlord.Lib.Harmony" Version="$(HarmonyVersion)" IncludeAssets="compile" />
    <PackageReference Include="lz4net" Version="1.0.15.93" />
    <PackageReference Include="Microsoft.Windows.CsWin32" Version="0.2.229-beta" PrivateAssets="all" IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
    <PackageReference Include="Mono.Cecil" Version="0.11.5" IncludeAssets="compile" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" PrivateAssets="all" />
    <PackageReference Include="PolySharp" Version="1.14.1" PrivateAssets="all" IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
    <PackageReference Include="StbSharp" Version="0.7.2.38" PrivateAssets="all" />
    <PackageReference Include="System.Drawing.Common" Version="6.0.0" />
    <PackageReference Include="System.Memory" Version="4.5.5" />
  </ItemGroup>

  <Target Name="SetLauncherExMetadata" BeforeTargets="BeforeCompile">
    <ItemGroup>
      <AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute">
        <_Parameter1>LauncherExVersion</_Parameter1>
        <_Parameter2>$(Version)</_Parameter2>
      </AssemblyAttribute>
      <AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute">
        <_Parameter1>GameVersion</_Parameter1>
        <_Parameter2>$(GameVersion)</_Parameter2>
      </AssemblyAttribute>
    </ItemGroup>
  </Target>
  
  <Target Name="ExcludeAssembliesFromILRepack" BeforeTargets="ILRepackPrepareBuild">
    <PropertyGroup>
      <ILRepackExcludeAssemblies>$(ILRepackExcludeAssemblies);$(ProjectDir)$(OutputPath)System.Drawing.dll;</ILRepackExcludeAssemblies>
      <ILRepackExcludeAssemblies>$(ILRepackExcludeAssemblies);$(ProjectDir)$(OutputPath)System.Drawing.Common.dll;</ILRepackExcludeAssemblies>
      <ILRepackExcludeAssemblies>$(ILRepackExcludeAssemblies);$(ProjectDir)$(OutputPath)System.Drawing.Primitives.dll;</ILRepackExcludeAssemblies>
    </PropertyGroup>
  </Target>

  <Target Name="SetBUTRCompatibilityScoreUrl" BeforeTargets="BeforeCompile">
    <ItemGroup Condition="$(BUTRCompatibilityScoreUrl) != ''">
      <AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute">
        <_Parameter1>BUTRCompatibilityScoreUrl</_Parameter1>
        <_Parameter2>$(BUTRCompatibilityScoreUrl)</_Parameter2>
      </AssemblyAttribute>
    </ItemGroup>
    <Warning Condition="$(BUTRCompatibilityScoreUrl) == ''" Text="Environment variable 'BANNERLORD_BUTR_COMPATIBILITY_SCORE_URL' is not set!" />
  </Target>

</Project>