Files
2025-07-07 09:39:03 +08:00

116 lines
14 KiB
XML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- The Platform property is Win32 or x64 for C++ projects. Convert from Win32 to x86 to match our directory structure.
If PlatformTarget property is set, then use that to determine EffectivePlatform for .NET projects.
See conditions: https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-conditions?view=vs-2019
and PropertyGroup: https://docs.microsoft.com/en-us/visualstudio/msbuild/propertygroup-element-msbuild?view=vs-2019
-->
<PropertyGroup>
<EffectivePlatform>$(Platform)</EffectivePlatform>
<EffectivePlatform Condition="'$(Platform)' == 'Win32'">x86</EffectivePlatform>
<EffectivePlatform Condition="'$(Platform)' == 'Any CPU'">x86</EffectivePlatform>
<EffectivePlatform Condition="'$(Platform)' == 'AnyCPU'">x86</EffectivePlatform>
<EffectivePlatform Condition="'$(NETCoreSdkRuntimeIdentifier)' == 'win-x86'">x86</EffectivePlatform>
<EffectivePlatform Condition="'$(NETCoreSdkRuntimeIdentifier)' == 'win-x64'">x64</EffectivePlatform>
<EffectivePlatform Condition="'$(PlatformTarget)' == 'x64'">x64</EffectivePlatform>
<EffectivePlatform Condition="'$(PlatformTarget)' == 'x86'">x86</EffectivePlatform>
<EffectivePlatform Condition="'$(PlatformTarget)' == 'Any CPU'">anycpu</EffectivePlatform>
<EffectivePlatform Condition="'$(PlatformTarget)' == 'AnyCPU'">anycpu</EffectivePlatform>
</PropertyGroup>
<!-- Define custom property to provide user ability to switch between loader static lib or dll.
Dynamic value to dll, Static value to static lib
See MSBuild properties: https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-properties?view=vs-2019
-->
<PropertyGroup>
<WebView2LoaderPreference>Dynamic</WebView2LoaderPreference>
</PropertyGroup>
<!-- Make our header path available in the include path.
See CL task: https://docs.microsoft.com/en-us/visualstudio/msbuild/cl-task?view=vs-2019
-->
<ItemDefinitionGroup>
<ClCompile>
<!-- MSBuildThisFileDirectory is the path containing this targets file.
See well-known properties: https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-reserved-and-well-known-properties?view=vs-2019
-->
<AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)native\include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<!-- Update link path to include appropriate arch directory and link against our lib.
See Link task: https://docs.microsoft.com/en-us/visualstudio/msbuild/link-task?view=vs-2019
-->
<ItemDefinitionGroup>
<Link>
<WebView2LoaderLib Condition="'$(WebView2LoaderPreference)' == 'Static'">WebView2LoaderStatic.lib;version.lib</WebView2LoaderLib>
<AdditionalDependencies>%(WebView2LoaderLib);WebView2Loader.dll.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(MSBuildThisFileDirectory)native\$(EffectivePlatform);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<!-- Copy DLL to the output path.
Only Copy DLL to the output path when project is C++ and WebView2LoaderPreference is set to Dynamic.
.NET will pick DLL at runtime from runtime folder or processor bit folder base on Core or Framework.
See Content: https://docs.microsoft.com/en-us/visualstudio/msbuild/common-msbuild-project-items?view=vs-2019
See Architecture-specific folders for .NET:
https://docs.microsoft.com/en-us/nuget/create-packages/supporting-multiple-target-frameworks#architecture-specific-folders
-->
<ItemGroup Condition="'$(WebView2LoaderPreference)' == 'Dynamic' And '$(WebView2ProjectKind)' == 'native'">
<Content Include="$(MSBuildThisFileDirectory)native\$(EffectivePlatform)\WebView2Loader.dll">
<Link>%(Filename)%(Extension)</Link>
<PublishState>Included</PublishState>
<Visible>False</Visible>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<!-- Copy x64, x86 and arm64 WebView2Loader.dlls to sub folders in the output path. For .NET Framework we match
the folder convention used by .NET Core for consistency.
Microsoft.Web.WebView2.Core.dll handles loading the right DLL at runtime for Any CPU under those sub folders.
For SDK style project, check for TargetFramework. For msbuild style, check to make sure project is not C++ and TargetFrameworkVersion equal to v after trimming all numbers and dots.
https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-target-framework-and-target-platform?view=vs-2019#target-framework-and-profile
-->
<ItemGroup Condition="'$(WebView2ProjectKind)' == 'managed' And '$(TargetPlatformIdentifier)' != 'UAP'">
<Content Include="$(MSBuildThisFileDirectory)\..\runtimes\win-x86\native\WebView2Loader.dll" Condition="'$(EffectivePlatform)' == 'x86' Or '$(EffectivePlatform)' == 'anycpu'">
<Link>runtimes\win-x86\native\WebView2Loader.dll</Link>
<PublishState>Included</PublishState>
<Visible>False</Visible>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<IncludeInVsix>true</IncludeInVsix>
</Content>
<Content Include="$(MSBuildThisFileDirectory)\..\runtimes\win-x64\native\WebView2Loader.dll" Condition="'$(EffectivePlatform)' == 'x64' Or '$(EffectivePlatform)' == 'anycpu'">
<Link>runtimes\win-x64\native\WebView2Loader.dll</Link>
<PublishState>Included</PublishState>
<Visible>False</Visible>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<IncludeInVsix>true</IncludeInVsix>
</Content>
<Content Include="$(MSBuildThisFileDirectory)\..\runtimes\win-arm64\native\WebView2Loader.dll" Condition="'$(EffectivePlatform)' == 'arm64' Or '$(EffectivePlatform)' == 'anycpu'">
<Link>runtimes\win-arm64\native\WebView2Loader.dll</Link>
<PublishState>Included</PublishState>
<Visible>False</Visible>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<IncludeInVsix>true</IncludeInVsix>
</Content>
</ItemGroup>
<!-- Setup UWP DLLs.
See: https://docs.microsoft.com/en-us/nuget/guides/create-uwp-packages
-->
<ItemGroup Condition="'$(TargetPlatformIdentifier)' == 'UAP'">
<Reference Include="$(MSBuildThisFileDirectory)..\lib\Microsoft.Web.WebView2.Core.winmd">
<Implementation>Microsoft.Web.WebView2.Core.dll</Implementation>
</Reference>
<ReferenceCopyLocalPaths Include="$(MSBuildThisFileDirectory)..\runtimes\win-$(EffectivePlatform)\native_uap\Microsoft.Web.WebView2.Core.dll" />
<SDKReference Include="Microsoft.VCLibs.Desktop, Version=14.0"/>
</ItemGroup>
<!-- Cleanup our copied files when cleaning.
See Delete: https://docs.microsoft.com/en-us/visualstudio/msbuild/delete-task?view=vs-2019
See AfterTargets: https://docs.microsoft.com/en-us/visualstudio/msbuild/target-build-order?view=vs-2019
-->
<Target Name="CleanDownloadContentFiles" AfterTargets="Clean">
<Delete Files="$(OutputPath)\WebView2Loader.dll"/>
</Target>
</Project>