-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move platform dependent files to respective directories. #3168
Closed
Closed
Changes from 12 commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
3692a86
Move the CefSharp.Common platform dependendent libraries to the platf…
14c7d46
Copy the CefSharp.OffScreen platform specific libraries to the platfo…
e7898ab
Copy the CefSharp.WinForms platform specific libraries to the platfor…
67c3cc1
Copy the CefSharp.Wpf platform specific libraries to the platform spe…
8e58016
Add app.config transforms for CefSharp.Common to build process.
37b733f
Add app.config transforms for CefSharp.OffScreen to build process.
a376379
Add app.config transforms for CefSharp.WinForms to build process.
e0e32bf
Add app.config transforms for CefSharp.Wpf to build process.
8eeec8b
Update CefSharp build script to set versions in app.config transform …
a14711a
Add missing NuGet transform and target files to the CefSharp solution.
66d95f5
Do not attempt to remove non-existant dependentAssembly sections.
6419900
Merge branch 'master' into issue_3161
582b342
Use correct processorArhitecture for x64 platflorms. See https://docs…
3c64bf6
Use Choose instead of ItemGroup to conditionally include files.
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"> | ||
<!-- Add the runtime section if missing. --> | ||
<runtime xdt:Transform="InsertIfMissing"/> | ||
|
||
<runtime> | ||
<!-- Add the assemblyBinding section if missing. --> | ||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xdt:Transform="InsertIfMissing"/> | ||
</runtime> | ||
|
||
<runtime> | ||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> | ||
<!-- Add the dependentAssembly section for CefSharp.Core if missing. --> | ||
<dependentAssembly xdt:Transform="InsertIfMissing" xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x64' and asmv1:assemblyIdentity/@name='CefSharp.Core')"> | ||
<assemblyIdentity name="CefSharp.Core" processorArchitecture="x64" publicKeyToken="40c4b6fc221f4138" culture="neutral"/> | ||
</dependentAssembly> | ||
|
||
<!-- Add or update the codeBase information for CefSharp.Core. --> | ||
<dependentAssembly xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x64' and asmv1:assemblyIdentity/@name='CefSharp.Core')"> | ||
<!-- Add the codebase section if missing. --> | ||
<codeBase xdt:Transform="InsertIfMissing"/> | ||
<!-- Ensure the codeBase version and href are set to the correct values. --> | ||
<codeBase version="83.4.3.0" href="x64/CefSharp.Core.dll" xdt:Transform="Replace"/> | ||
</dependentAssembly> | ||
|
||
<!-- Add the dependentAssembly section for CefSharp if missing. --> | ||
<dependentAssembly xdt:Transform="InsertIfMissing" xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x64' and asmv1:assemblyIdentity/@name='CefSharp')"> | ||
<assemblyIdentity name="CefSharp" processorArchitecture="x64" publicKeyToken="40c4b6fc221f4138" culture="neutral"/> | ||
</dependentAssembly> | ||
|
||
<!-- Add or update the codeBase information for CefSharp. --> | ||
<dependentAssembly xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x64' and asmv1:assemblyIdentity/@name='CefSharp')"> | ||
<!-- Add the codeBase section if missing. --> | ||
<codeBase xdt:Transform="InsertIfMissing"/> | ||
<!-- Ensure the codeBase version and href are set to the correct values. --> | ||
<codeBase xdt:Transform="Replace" version="83.4.3.0" href="x64/CefSharp.dll"/> | ||
</dependentAssembly> | ||
|
||
<!-- Add the dependentAssembly section for CefSharp.BrowserSubprocess.Core if missing. --> | ||
<dependentAssembly xdt:Transform="InsertIfMissing" xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x64' and asmv1:assemblyIdentity/@name='CefSharp.BrowserSubprocess.Core')"> | ||
<assemblyIdentity name="CefSharp.BrowserSubprocess.Core" processorArchitecture="x64" publicKeyToken="40c4b6fc221f4138" culture="neutral"/> | ||
</dependentAssembly> | ||
|
||
<!-- Add or update the codeBase information for CefSharp.BrowserSubprocess.Core --> | ||
<dependentAssembly xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x64' and asmv1:assemblyIdentity/@name='CefSharp.BrowserSubprocess.Core')"> | ||
<!-- Add the codeBase section if missing. --> | ||
<codeBase xdt:Transform="InsertIfMissing"/> | ||
<!-- Ensure the codeBase version and href are set to the correct values. --> | ||
<codeBase xdt:Transform="Replace" version="83.4.3.0" href="x64/CefSharp.BrowserSubprocess.Core.dll"/> | ||
</dependentAssembly> | ||
</assemblyBinding> | ||
</runtime> | ||
</configuration> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"> | ||
<!-- Add the runtime section if missing. --> | ||
<runtime xdt:Transform="InsertIfMissing"/> | ||
|
||
<runtime> | ||
<!-- Add the assemblyBinding section if missing. --> | ||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xdt:Transform="InsertIfMissing"/> | ||
</runtime> | ||
|
||
<runtime> | ||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> | ||
<!-- Add the dependentAssembly section for CefSharp.Core if missing. --> | ||
<dependentAssembly xdt:Transform="InsertIfMissing" xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x86' and asmv1:assemblyIdentity/@name='CefSharp.Core')"> | ||
<assemblyIdentity name="CefSharp.Core" processorArchitecture="x86" publicKeyToken="40c4b6fc221f4138" culture="neutral"/> | ||
</dependentAssembly> | ||
|
||
<!-- Add or update the codeBase information for CefSharp.Core. --> | ||
<dependentAssembly xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x86' and asmv1:assemblyIdentity/@name='CefSharp.Core')"> | ||
<!-- Add the codebase section if missing. --> | ||
<codeBase xdt:Transform="InsertIfMissing"/> | ||
<!-- Ensure the codeBase version and href are set to the correct values. --> | ||
<codeBase version="83.4.3.0" href="x86/CefSharp.Core.dll" xdt:Transform="Replace"/> | ||
</dependentAssembly> | ||
|
||
<!-- Add the dependentAssembly section for CefSharp if missing. --> | ||
<dependentAssembly xdt:Transform="InsertIfMissing" xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x86' and asmv1:assemblyIdentity/@name='CefSharp')"> | ||
<assemblyIdentity name="CefSharp" processorArchitecture="x86" publicKeyToken="40c4b6fc221f4138" culture="neutral"/> | ||
</dependentAssembly> | ||
|
||
<!-- Add or update the codeBase information for CefSharp. --> | ||
<dependentAssembly xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x86' and asmv1:assemblyIdentity/@name='CefSharp')"> | ||
<!-- Add the codeBase section if missing. --> | ||
<codeBase xdt:Transform="InsertIfMissing"/> | ||
<!-- Ensure the codeBase version and href are set to the correct values. --> | ||
<codeBase xdt:Transform="Replace" version="83.4.3.0" href="x86/CefSharp.dll"/> | ||
</dependentAssembly> | ||
|
||
<!-- Add the dependentAssembly section for CefSharp.BrowserSubprocess.Core if missing. --> | ||
<dependentAssembly xdt:Transform="InsertIfMissing" xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x86' and asmv1:assemblyIdentity/@name='CefSharp.BrowserSubprocess.Core')"> | ||
<assemblyIdentity name="CefSharp.BrowserSubprocess.Core" processorArchitecture="x86" publicKeyToken="40c4b6fc221f4138" culture="neutral"/> | ||
</dependentAssembly> | ||
|
||
<!-- Add or update the codeBase information for CefSharp.BrowserSubprocess.Core --> | ||
<dependentAssembly xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x86' and asmv1:assemblyIdentity/@name='CefSharp.BrowserSubprocess.Core')"> | ||
<!-- Add the codeBase section if missing. --> | ||
<codeBase xdt:Transform="InsertIfMissing"/> | ||
<!-- Ensure the codeBase version and href are set to the correct values. --> | ||
<codeBase xdt:Transform="Replace" version="83.4.3.0" href="x86/CefSharp.BrowserSubprocess.Core.dll"/> | ||
</dependentAssembly> | ||
</assemblyBinding> | ||
</runtime> | ||
</configuration> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,77 +1,49 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
<Target Name="PlatformCheck" BeforeTargets="ResolveAssemblyReferences" Condition="(('$(Platform)' != 'x86') AND ('$(Platform)' != 'x64') AND ('$(Platform)' != 'Win32') AND '$(CefSharpAnyCpuSupport)' != 'true')"> | ||
<Error Text="$(MSBuildThisFileName) is unable to proceeed as your current Platform is '$(Platform)'. To target AnyCPU please read https://github.com/cefsharp/CefSharp/issues/1714. Alternatively change your Platform to x86 or x64 and the relevant files will be copied automatically. For details on changing your projects Platform see https://docs.microsoft.com/en-gb/visualstudio/ide/how-to-configure-projects-to-target-platforms?view=vs-2017" HelpKeyword="CefSharpSolutionPlatformCheck" /> | ||
</Target> | ||
|
||
<Target Name="FrameworkVersionCheck" BeforeTargets="ResolveAssemblyReferences" Condition="(('$(TargetFrameworkVersion)' == 'v4.5.1') OR ('$(TargetFrameworkVersion)' == 'v4.5') OR ('$(TargetFrameworkVersion)' == 'v4.0'))"> | ||
<Error Text="CefSharp requires .Net 4.5.2 or higher" /> | ||
</Target> | ||
|
||
<PropertyGroup> | ||
<CefSharpTargetDir Condition=" '$(CefSharpTargetDir)' == '' ">.</CefSharpTargetDir> | ||
</PropertyGroup> | ||
|
||
<!-- | ||
These item groups should be in the .props file, unfortunately Nuget 2.8.x doesn't gurantee the | ||
correct ordering .props imports, which we require as this depends on the cef.redist packages | ||
exporting an ItemGroup | ||
--> | ||
|
||
<ItemGroup Condition="('$(Platform)' == 'x86') OR ('$(Platform)' == 'Win32')"> | ||
<ItemGroup Condition="('$(Platform)' == 'AnyCPU') OR ('$(Platform)' == 'x86') OR ('$(Platform)' == 'Win32')"> | ||
<None Include="@(CefRedist32)"> | ||
<Link>$(CefSharpTargetDir)\%(RecursiveDir)%(FileName)%(Extension)</Link> | ||
<Link>x86\%(RecursiveDir)%(FileName)%(Extension)</Link> | ||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||
<PublishState>Include</PublishState> | ||
<Visible>false</Visible> | ||
</None> | ||
<None Include="@(CefSharpCommonBinaries32)"> | ||
<Link>$(CefSharpTargetDir)\%(RecursiveDir)%(FileName)%(Extension)</Link> | ||
<Link>x86\%(RecursiveDir)%(FileName)%(Extension)</Link> | ||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||
<PublishState>Include</PublishState> | ||
<Visible>false</Visible> | ||
</None> | ||
</ItemGroup> | ||
|
||
<ItemGroup Condition="'$(Platform)' == 'x64'"> | ||
<ItemGroup Condition="('$(Platform)' == 'AnyCPU') OR ('$(Platform)' == 'x64')"> | ||
<None Include="@(CefRedist64)"> | ||
<Link>$(CefSharpTargetDir)\%(RecursiveDir)%(FileName)%(Extension)</Link> | ||
<Link>x64\%(RecursiveDir)%(FileName)%(Extension)</Link> | ||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||
<PublishState>Include</PublishState> | ||
<Visible>false</Visible> | ||
</None> | ||
<None Include="@(CefSharpCommonBinaries64)"> | ||
<Link>$(CefSharpTargetDir)\%(RecursiveDir)%(FileName)%(Extension)</Link> | ||
<Link>x64\%(RecursiveDir)%(FileName)%(Extension)</Link> | ||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||
<PublishState>Include</PublishState> | ||
<Visible>false</Visible> | ||
</None> | ||
</ItemGroup> | ||
|
||
<ItemGroup Condition="'$(Platform)' == 'AnyCPU'"> | ||
<None Include="@(CefRedist32)"> | ||
<Link>$(CefSharpTargetDir)\x86\%(RecursiveDir)%(FileName)%(Extension)</Link> | ||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||
<PublishState>Include</PublishState> | ||
<Visible>false</Visible> | ||
</None> | ||
<None Include="@(CefRedist64)"> | ||
<Link>$(CefSharpTargetDir)\x64\%(RecursiveDir)%(FileName)%(Extension)</Link> | ||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||
<PublishState>Include</PublishState> | ||
<Visible>false</Visible> | ||
</None> | ||
<None Include="@(CefSharpCommonBinaries32)"> | ||
<Link>$(CefSharpTargetDir)\x86\%(RecursiveDir)%(FileName)%(Extension)</Link> | ||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||
<PublishState>Include</PublishState> | ||
<Visible>false</Visible> | ||
</None> | ||
<None Include="@(CefSharpCommonBinaries64)"> | ||
<Link>$(CefSharpTargetDir)\x64\%(RecursiveDir)%(FileName)%(Extension)</Link> | ||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||
<PublishState>Include</PublishState> | ||
<Visible>false</Visible> | ||
</None> | ||
</ItemGroup> | ||
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" /> | ||
<Target Name="CefSharpCommon_TransformX86Config" Condition="('$(Platform)' == 'AnyCPU') OR ('$(Platform)' == 'x86') OR ('$(Platform)' == 'Win32')" AfterTargets="_CopyAppConfigFile"> | ||
<TransformXml Source="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')" Transform="$(MSBuildThisFileDirectory)app.config.x86.transform" Destination="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')"/> | ||
</Target> | ||
<Target Name="CefSharpCommon_TransformX64Config" Condition="('$(Platform)' == 'AnyCPU') OR ('$(Platform)' == 'x64')" AfterTargets="_CopyAppConfigFile"> | ||
<TransformXml Source="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')" Transform="$(MSBuildThisFileDirectory)app.config.x64.transform" Destination="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')"/> | ||
</Target> | ||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"> | ||
<!-- Add the runtime section if missing. --> | ||
<runtime xdt:Transform="InsertIfMissing"/> | ||
|
||
<runtime> | ||
<!-- Add the assemblyBinding section if missing. --> | ||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xdt:Transform="InsertIfMissing"/> | ||
</runtime> | ||
|
||
<runtime> | ||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> | ||
<!-- Add the dependentAssembly section for CefSharp.OffScreen if missing. --> | ||
<dependentAssembly xdt:Transform="InsertIfMissing" xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x64' and asmv1:assemblyIdentity/@name='CefSharp.OffScreen')"> | ||
<assemblyIdentity name="CefSharp.OffScreen" processorArchitecture="x64" publicKeyToken="40c4b6fc221f4138" culture="neutral"/> | ||
</dependentAssembly> | ||
|
||
<!-- Add or update the codeBase information for CefSharp.OffScreen. --> | ||
<dependentAssembly xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x64' and asmv1:assemblyIdentity/@name='CefSharp.OffScreen')"> | ||
<!-- Add the codeBase section if missing. --> | ||
<codeBase xdt:Transform="InsertIfMissing"/> | ||
<!-- Ensure the codeBase version and href are set to the correct values. --> | ||
<codeBase xdt:Transform="Replace" version="83.4.3.0" href="x64/CefSharp.OffScreen.dll"/> | ||
</dependentAssembly> | ||
</assemblyBinding> | ||
</runtime> | ||
</configuration> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"> | ||
<!-- Add the runtime section if missing. --> | ||
<runtime xdt:Transform="InsertIfMissing"/> | ||
|
||
<runtime> | ||
<!-- Add the assemblyBinding section if missing. --> | ||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xdt:Transform="InsertIfMissing"/> | ||
</runtime> | ||
|
||
<runtime> | ||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> | ||
<!-- Add the dependentAssembly section for CefSharp.OffScreen if missing. --> | ||
<dependentAssembly xdt:Transform="InsertIfMissing" xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x86' and asmv1:assemblyIdentity/@name='CefSharp.OffScreen')"> | ||
<assemblyIdentity name="CefSharp.OffScreen" processorArchitecture="x86" publicKeyToken="40c4b6fc221f4138" culture="neutral"/> | ||
</dependentAssembly> | ||
|
||
<!-- Add or update the codeBase information for CefSharp.OffScreen. --> | ||
<dependentAssembly xdt:Locator="Condition(asmv1:assemblyIdentity/@processorArchitecture='x86' and asmv1:assemblyIdentity/@name='CefSharp.OffScreen')"> | ||
<!-- Add the codeBase section if missing. --> | ||
<codeBase xdt:Transform="InsertIfMissing"/> | ||
<!-- Ensure the codeBase version and href are set to the correct values. --> | ||
<codeBase xdt:Transform="Replace" version="83.4.3.0" href="x86/CefSharp.OffScreen.dll"/> | ||
</dependentAssembly> | ||
</assemblyBinding> | ||
</runtime> | ||
</configuration> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would this run on
VS2013/VS2015
? The folder structure changed starting withVS2017
, so I'd be surprised if this actually ran on older versions.From what I can tell
Microsoft.Web.Publishing.Tasks.dll
is not guaranteed to be installed inVisual Studio
, looks like it's only installed as part of the web development tools. I don't think we can reasonably ask people to install this just to use our nuget package. Specially anyone upgrading for whom the packages worked previously.Reference https://stackoverflow.com/a/44855452/4583726
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wasn't aware of this, I think we can resolve this by using a custom task library that utilizes Microsoft.Web.Xdt.