Started implementing BrowserOverlay.
This commit is contained in:
parent
7ca043edba
commit
3ef6bd79e1
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
|
||||
</startup>
|
||||
</configuration>
|
||||
</configuration>
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:VRDash"
|
||||
mc:Ignorable="d"
|
||||
KeyDown="Window_KeyDown"
|
||||
Title="VRDash" Height="700" Width="800">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
|
|
|
|||
|
|
@ -217,6 +217,20 @@ namespace VRDash
|
|||
var profile = ProfileManager.LoadProfile();
|
||||
LoadProfile(profile);
|
||||
}
|
||||
|
||||
private void Window_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if(e.Key == Key.F1)
|
||||
{
|
||||
var conf = new MonitorOverlayConfig();
|
||||
conf.Name = "Test Browser";
|
||||
conf.Key = "asdfasdf";
|
||||
conf.Location = new Overlay.Config.OverlayLocation.DashboardLocation();
|
||||
var overlay = new Overlay.BrowserOverlay(conf);
|
||||
overlay.Create();
|
||||
overlay.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class EditorMap
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
<Window x:Class="VRDash.Overlay.BrowserOverlay"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:VRDash.Overlay"
|
||||
xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
|
||||
mc:Ignorable="d"
|
||||
Title="BrowserOverlay" Height="450" Width="800">
|
||||
<Grid>
|
||||
<cefSharp:ChromiumWebBrowser x:Name="cwbBrowser" IsBrowserInitializedChanged="cwbBrowser_IsBrowserInitializedChanged" Paint="cwbBrowser_Paint"/>
|
||||
</Grid>
|
||||
</Window>
|
||||
|
|
@ -0,0 +1,241 @@
|
|||
using CefSharp;
|
||||
using SharpDX;
|
||||
using SharpDX.Direct3D11;
|
||||
using SharpDX.DXGI;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using Valve.VR;
|
||||
using VRDash.Overlay.Config;
|
||||
|
||||
namespace VRDash.Overlay
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for BrowserOverlay.xaml
|
||||
/// </summary>
|
||||
public partial class BrowserOverlay : Window, IOverlay
|
||||
{
|
||||
ulong m_OverlayHandle = OpenVR.k_ulOverlayHandleInvalid;
|
||||
public ulong OverlayHandle { get { return m_OverlayHandle; } }
|
||||
|
||||
ulong m_ThumbnailHandle = OpenVR.k_ulOverlayHandleInvalid;
|
||||
|
||||
public IOverlayConfig OverlayConfig { get { return Config; } }
|
||||
|
||||
//CHANGEME to the BrowserOverlayCOnfig you make later
|
||||
public IOverlayConfig Config { get; }
|
||||
|
||||
public int CurrentFPS { get; private set; } = 0;
|
||||
|
||||
public bool IsDisposed { get; private set; } = false;
|
||||
|
||||
public event EventHandler OverlayShown;
|
||||
public event EventHandler OverlayHidden;
|
||||
public event EventHandler Update;
|
||||
|
||||
bool m_Created = false;
|
||||
|
||||
//CHANGEME to the BrowserOverlayCOnfig you make later
|
||||
public BrowserOverlay(IOverlayConfig config)
|
||||
{
|
||||
Config = config;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
Factory1 m_Factory = null;
|
||||
Adapter1 m_Adapter = null;
|
||||
SharpDX.Direct3D11.Device m_Device = null;
|
||||
|
||||
int m_LastWidth = 0;
|
||||
int m_LastHeight = 0;
|
||||
|
||||
Texture2D m_ScreenTexture = null;
|
||||
DataStream m_Stream = null;
|
||||
|
||||
|
||||
int frames = 0;
|
||||
DateTime lastFps = DateTime.MinValue;
|
||||
DateTime lastNameCheck = DateTime.MinValue;
|
||||
|
||||
public void Create()
|
||||
{
|
||||
if (m_Created) { throw new Exception("This overlay has already been created."); }
|
||||
|
||||
Config.OverlayLocation.OverlayHandles overlayHandles = Config.Location.CreateOverlay(Config.Key, Config.Name, this);
|
||||
|
||||
m_OverlayHandle = overlayHandles.OverlayHandle;
|
||||
m_ThumbnailHandle = overlayHandles.ThumbnailHandle;
|
||||
OpenVR.Overlay.ShowOverlay(m_OverlayHandle);
|
||||
m_Created = true;
|
||||
|
||||
#region Rendering setup
|
||||
m_Factory = new Factory1();
|
||||
//Get first adapter
|
||||
m_Adapter = m_Factory.GetAdapter1(0);
|
||||
//Get device from adapter
|
||||
m_Device = new SharpDX.Direct3D11.Device(m_Adapter);
|
||||
#endregion
|
||||
}
|
||||
|
||||
public void Destroy()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (IsDisposed) { return; }
|
||||
Destroy();
|
||||
IsDisposed = true;
|
||||
}
|
||||
|
||||
public string GetOverlayName()
|
||||
{
|
||||
EVROverlayError err = EVROverlayError.None;
|
||||
StringBuilder sb = new StringBuilder(255);
|
||||
uint res = OpenVR.Overlay.GetOverlayName(m_OverlayHandle, sb, 255, ref err);
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
public void SetOverlayName(string newName)
|
||||
{
|
||||
OpenVR.Overlay.SetOverlayName(m_OverlayHandle, newName);
|
||||
}
|
||||
|
||||
public float GetOverlayWidth()
|
||||
{
|
||||
float width = 0f;
|
||||
OpenVR.Overlay.GetOverlayWidthInMeters(m_OverlayHandle, ref width);
|
||||
return width;
|
||||
}
|
||||
|
||||
public void SetOverlayWidth(float width)
|
||||
{
|
||||
OpenVR.Overlay.SetOverlayWidthInMeters(m_OverlayHandle, width);
|
||||
}
|
||||
|
||||
private void cwbBrowser_IsBrowserInitializedChanged(object sender, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
if ((bool)e.NewValue)
|
||||
{
|
||||
cwbBrowser.LoadHtml("<iframe frameborder=\"0\"\r\n scrolling=\"no\"\r\n id=\"chat_embed\"\r\n src=\"https://www.twitch.tv/embed/meteos/chat\"\r\n height=\"500\"\r\n width=\"350\">\r\n</iframe>");
|
||||
}
|
||||
}
|
||||
|
||||
#region Rendering shit
|
||||
|
||||
private void cwbBrowser_Paint(object sender, CefSharp.Wpf.PaintEventArgs e)
|
||||
{
|
||||
if (!m_Created) { return; }
|
||||
Update?.Invoke(this, null);
|
||||
|
||||
if (m_ScreenTexture == null || (m_LastWidth != e.Width || m_LastHeight != e.Height))
|
||||
{
|
||||
m_LastWidth = e.Width;
|
||||
m_LastHeight = e.Height;
|
||||
|
||||
if (m_ScreenTexture != null)
|
||||
{
|
||||
m_ScreenTexture.Dispose();
|
||||
|
||||
//Dispose not freeing screenTexture: https://gamedev.stackexchange.com/questions/93311/freeing-texture-memory-in-sharpdx-what-am-i-missing
|
||||
m_Device.ImmediateContext.ClearState();
|
||||
m_Device.ImmediateContext.Flush();
|
||||
}
|
||||
|
||||
var textureDesc = new Texture2DDescription
|
||||
{
|
||||
CpuAccessFlags = CpuAccessFlags.Write,
|
||||
BindFlags = BindFlags.ShaderResource,
|
||||
Format = Format.B8G8R8A8_UNorm,
|
||||
//Format = Format.B8G8R8A8_UNorm_SRgb,
|
||||
Width = e.Width,
|
||||
Height = e.Height,
|
||||
OptionFlags = ResourceOptionFlags.None,
|
||||
MipLevels = 1,
|
||||
ArraySize = 1,
|
||||
SampleDescription = { Count = 1, Quality = 0 },
|
||||
Usage = ResourceUsage.Dynamic
|
||||
};
|
||||
m_ScreenTexture = new Texture2D(m_Device, textureDesc);
|
||||
m_Stream = new DataStream(4 * e.Width * e.Height, true, true);
|
||||
|
||||
OpenVR.Overlay.SetOverlayWidthInMeters(m_OverlayHandle, Config.OverlayWidth);
|
||||
|
||||
HmdVector2_t vecWindowSize = new HmdVector2_t() { v0 = e.Width, v1 = e.Height };
|
||||
OpenVR.Overlay.SetOverlayMouseScale(m_OverlayHandle, ref vecWindowSize);
|
||||
this.GetLogger().Info($"Browser resized, texture updated. ({e.Width}x{e.Height})");
|
||||
}
|
||||
|
||||
DataBox databox = m_Device.ImmediateContext.MapSubresource(m_ScreenTexture, 0, MapMode.WriteDiscard,
|
||||
SharpDX.Direct3D11.MapFlags.None, out m_Stream);
|
||||
|
||||
|
||||
int stride = e.Width * 4;
|
||||
|
||||
if (!databox.IsEmpty)
|
||||
{
|
||||
int count = 4 * e.Width * e.Height;
|
||||
|
||||
//Stride compensation. Sometimes the BMP and DX texture strides are different. This fixes it.
|
||||
if (databox.RowPitch == stride)
|
||||
{
|
||||
m_Stream.Write(e.Buffer, 0, count);
|
||||
}
|
||||
//Truncate the extra BMP bytes.
|
||||
else if (databox.RowPitch < stride)
|
||||
{
|
||||
for (int i = 0; i < e.Height; i++)
|
||||
{
|
||||
m_Stream.Write(e.Buffer, (stride * i), databox.RowPitch);
|
||||
}
|
||||
}
|
||||
//Add some junk on empty bytes on the end to make everyone happy.
|
||||
else if (databox.RowPitch > stride)
|
||||
{
|
||||
int difference = databox.RowPitch - stride;
|
||||
byte[] junk = new byte[difference];
|
||||
for (int i = 0; i < e.Height; i++)
|
||||
{
|
||||
m_Stream.Write(e.Buffer, (stride * i), stride);
|
||||
m_Stream.Write(junk, 0, difference);
|
||||
}
|
||||
}
|
||||
//stream.Write(data.Scan0, 0, count);
|
||||
}
|
||||
|
||||
m_Device.ImmediateContext.UpdateSubresource(ref databox, m_ScreenTexture, 0, stride, 1);
|
||||
|
||||
var texture = new Texture_t();
|
||||
texture.handle = m_ScreenTexture.NativePointer;
|
||||
texture.eType = ETextureType.DirectX;
|
||||
texture.eColorSpace = EColorSpace.Auto;
|
||||
EVROverlayError result = OpenVR.Overlay.SetOverlayTexture(m_OverlayHandle, ref texture);
|
||||
if (result != EVROverlayError.None)
|
||||
{
|
||||
|
||||
this.GetLogger().Warn($"Error rendering: {result}");
|
||||
}
|
||||
|
||||
m_Device.ImmediateContext.UnmapSubresource(m_ScreenTexture, 0);
|
||||
|
||||
|
||||
|
||||
//FIXME Later...
|
||||
//frames++;
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
@ -44,7 +44,7 @@ namespace VRDash.Overlay
|
|||
public ulong ThumbnailIcon { get { return m_ThumbnailIcon; } }
|
||||
public IOverlayConfig OverlayConfig { get { return Config; } }
|
||||
|
||||
public WindowOverlayConfig Config { get; }
|
||||
public WindowOverlayConfig Config { get; private set; }
|
||||
|
||||
//internal string m_Key;
|
||||
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@
|
|||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace VRDash.Properties
|
||||
{
|
||||
|
||||
|
||||
namespace VRDash.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
|
|
@ -19,51 +19,43 @@ namespace VRDash.Properties
|
|||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VDash.Properties.Resources", typeof(Resources).Assembly);
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VRDash.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,21 +8,17 @@
|
|||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace VRDash.Properties
|
||||
{
|
||||
|
||||
|
||||
namespace VRDash.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.8.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.props" Condition="Exists('..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.props')" />
|
||||
<Import Project="..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.props')" />
|
||||
<Import Project="..\packages\cef.redist.x86.73.1.13\build\cef.redist.x86.props" Condition="Exists('..\packages\cef.redist.x86.73.1.13\build\cef.redist.x86.props')" />
|
||||
<Import Project="..\packages\cef.redist.x64.73.1.13\build\cef.redist.x64.props" Condition="Exists('..\packages\cef.redist.x64.73.1.13\build\cef.redist.x64.props')" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
|
|
@ -8,11 +12,14 @@
|
|||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>VRDash</RootNamespace>
|
||||
<AssemblyName>VRDash</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Deterministic>true</Deterministic>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
|
|
@ -95,6 +102,9 @@
|
|||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Compile Include="Logger.cs" />
|
||||
<Compile Include="Overlay\BrowserOverlay.xaml.cs">
|
||||
<DependentUpon>BrowserOverlay.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Overlay\Config\OverlayLocation\ControllerLocation.cs" />
|
||||
<Compile Include="Overlay\Config\OverlayLocation\DashboardLocation.cs" />
|
||||
<Compile Include="Overlay\Config\OverlayLocation\IOverlayLocation.cs" />
|
||||
|
|
@ -165,6 +175,10 @@
|
|||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Page Include="Overlay\BrowserOverlay.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="UI\ActionEditors\ResizeWindowActionEditor.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
|
|
@ -243,4 +257,17 @@
|
|||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\cef.redist.x64.73.1.13\build\cef.redist.x64.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x64.73.1.13\build\cef.redist.x64.props'))" />
|
||||
<Error Condition="!Exists('..\packages\cef.redist.x86.73.1.13\build\cef.redist.x86.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x86.73.1.13\build\cef.redist.x86.props'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.props'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.props'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.targets')" />
|
||||
<Import Project="..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.targets" Condition="Exists('..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.targets')" />
|
||||
</Project>
|
||||
|
|
@ -1,5 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="cef.redist.x64" version="73.1.13" targetFramework="net452" />
|
||||
<package id="cef.redist.x86" version="73.1.13" targetFramework="net452" />
|
||||
<package id="CefSharp.Common" version="73.1.130" targetFramework="net452" />
|
||||
<package id="CefSharp.Wpf" version="73.1.130" targetFramework="net452" />
|
||||
<package id="JsonNet.PrivateSettersContractResolvers.Source" version="0.1.0" targetFramework="net45" developmentDependency="true" />
|
||||
<package id="log4net" version="2.0.8" targetFramework="net45" />
|
||||
<package id="Newtonsoft.Json" version="12.0.2" targetFramework="net45" />
|
||||
|
|
|
|||
Loading…
Reference in New Issue