名称空间“clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf”中不存在名称 ChromiumWebBrowser

Posted

技术标签:

【中文标题】名称空间“clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf”中不存在名称 ChromiumWebBrowser【英文标题】:The name ChromiumWebBrowser does not exist in the namespace "clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf" 【发布时间】:2017-01-29 11:04:58 【问题描述】:

我已按照link 实施 CefSharp 应用程序。

但我在编码MainWindow.xaml时卡住了。

Blend for VS 2015 说,

命名空间“clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf”中不存在名称 ChromiumWebBrowser

但我使用 NuGet 包管理器安装了 CefSharp.Common 和 CefSharp.Wpf v51.0.0、cef.redist.x64 和 cef.redist.x86 v3.2704.1432。

我是 C# 开发新手,所以我不知道如何解决这个问题。请帮我解决这个错误。

这是我的MainWindow.xaml

<Window x:Class="StocktalkBrowser.MainWindow"
        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:StocktalkBrowser"
        xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <cefSharp:ChromiumWebBrowser Grid.Row="0"  Address="https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions" />
    </Grid>
</Window>

【问题讨论】:

它只是说它作为信息,还是不编译?有时候设计师真的很傻,只是告诉你一些事情,但项目编译没有任何问题。也许清理你的项目并重建。有时这也有帮助 @NawedNabiZada 我累了很多次,但没关系。 它编译了吗? @NawedNabiZada 你能告诉我 clr 命名空间在哪里定义吗? @NawedNabiZada 不,它没有。 【参考方案1】:

我刚刚尝试了链接,正如我在 cmets 中提到的,它编译没有任何问题。

可以忽略。

而且预览版也不可用,我学会了忍受它。

编译时没有错误

程序启动。没问题

【讨论】:

我不知道为什么,但它现在运行良好!谢谢【参考方案2】:

对我来说,问题在于解决方案平台设置为 AnyCPU。 据我所知,CefSharp 不支持 AnyCPU。有趣的是,该解决方案在发布模式下运行良好,但在调试模式下我立即收到错误 - the invocation of the constructor on type that matches ... the specified binding constraints threw an exception.

我将解决方案平台更改为仅 x64 后,XAML 错误就消失了 (The name ChromiumWebBrowser does not exist in the namespace “clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf”)。我可以在 Debug 和 Release 模式下运行该解决方案。

【讨论】:

感谢您的回答。但我退休了使用 CdefSharp 并搬到了 Electron。当我有足够的时间时,我会再试一次。谢谢马尔科【参考方案3】:

XAML 设计器不支持它,所以在运行时加载它:

    从 XAMl 中删除元素,并放置任何容器,例如边框:

    <Border x:Name="cefChromeContainer" />
    

    在构造函数代码中,在InitializeComponent(); 调用之后,创建浏览器元素并放入容器中。最好在类 scoop 中声明浏览器:

    CefSharp.Wpf.ChromiumWebBrowser browser = new CefSharp.Wpf.ChromiumWebBrowser();
    
    public MainWindow()
    
        InitializeComponent();
        cefChromeContainer.Content = browser;
        browser.Address = "https://***.com";
    
    

【讨论】:

非常感谢!但我们选择了 Electron insteat。【参考方案4】:

我遇到了同样的问题,我解决了它,将配置从“debug”更改为“release”并使用“x64”作为平台。

但是像我通常做的那样,从解决方案菜单中更改它是不够的。您需要转到“编译 > 配置管理”下的 Visual Studio 主菜单,您可以在 Microsoft 的以下链接中看到:

https://docs.microsoft.com/es-es/visualstudio/ide/how-to-configure-projects-to-target-platforms?view=vs-2015&redirectedfrom=MSDN#Anchor_0

该解决方案实际上位于 cefsharp 的 Readme.txt 文件中,如 saschad 在他的回答中提供的“文档”链接中所述:https://github.com/cefsharp/CefSharp/blob/cefsharp/69/NuGet/Readme.txt

在那里你可以阅读它:

对于x86或x64set your solution target architecture tox86orx64`,目前仅仅改变项目是不够的(见 https://msdn.microsoft.com/en-us/library/ms185328.aspx#Anchor_0 为 详情)。

现在我让它像魅力一样运行:D

【讨论】:

【参考方案5】:

您可以在 NuGet 包的 (Documentation) 中阅读,还需要将 app.manifest 添加到您的应用程序中。

【讨论】:

以上是关于名称空间“clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf”中不存在名称 ChromiumWebBrowser的主要内容,如果未能解决你的问题,请参考以下文章

python 14 名称空间与作用域

Python--名称空间

PHP命名空间的三种引用方式:非限定名称限定名称完全限定名称

PHP命名空间的三种引用方式:非限定名称限定名称完全限定名称

python基础之名称空间和作用域函数嵌套

名称空间与作用域