在C#中编写chrome扩展名?

时间:2017-09-29 06:33:34

标签: c# asp.net-mvc google-chrome-extension

今天我第一次开始关注Chrome扩展程序,我有一个非常愚蠢的问题,我相信谷歌搜索的答案是否定的,但我只是想在这里确认社区。

  1. 是否可以使用C#编写代码而不是javascript?
  2. 是否可以在chrome扩展中使用部分视图(ASP.NET MVC),因为它呈现HTML?
  3. 我在VS Marketplace中找到了这个 https://marketplace.visualstudio.com/items?itemName=MadsKristensen.GoogleChromeExtensionProjectTemplate是否有其他模板具有引导程序等
  4. 干杯

6 个答案:

答案 0 :(得分:4)

Chrome扩展程序在浏览器中运行,因此您无法在Chrome扩展程序开发中使用 C#

Chrome扩展程序再次在浏览器中运行,因此您无法在Chrome扩展程序开发中使用 ASP.NET MVC ,但您可以使用 ASP.NET MVC 或任何其他服务器上的语言,用于生成视图并使用ajax在chrome扩展中呈现它们。

看看这个:https://github.com/Ehesp/Chrome-Extension-Twitter-Bootstrap-3-Template

答案 1 :(得分:1)

从技术上讲,您可以使用C#二进制文件作为Native Host,与浏览器中的JavaScript部分对话。

然而,这会使您的扩展分发变得复杂,因为您无法将两者捆绑到CWS;必须单独安装本机主机组件。

只有当您有合理的理由在浏览器沙箱中执行某些不可能的操作时,才应使用此方法。

答案 2 :(得分:1)

您可以使用C#创建浏览器扩展。 具体来说,使用客户端Blazor。

要发布,需要执行以下操作。

首先,您像普通的独立应用程序一样进行发布。 https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/blazor/webassembly?view=aspnetcore-3.1#standalone-deployment

然后,从目录名称中删除下划线。由于无法在扩展程序中使用。

# remove underbar from directory name
mv _framework/_bin _framework/bin
mv _framework framework
# rewrite
sed 's/_bin/bin/g' framework/blazor.webassembly.js
sed 's/_framework/framework/g' framework/blazor.webassembly.js index.html

然后,添加manifest.json并像这样设置CSP,

"content_security_policy": "script-src 'self' 'unsafe-eval' 'sha256-v8v3RKRPmN4odZ1CWM5gw80QKPCCWMcpNeOmimNL2AA='; object-src 'self'",

Blazor引导脚本将脚本标记添加到html,因此您应添加脚本哈希以允许执行引导脚本。

这是我创建的示例应用程序。 https://github.com/key-moon/WeatherForecastExtensionWithBlazor 并且,这是评论(用日语写)。 https://qiita.com/keymoon/items/03357e58eddf75871527

答案 3 :(得分:0)

不得在JavaScript中分发Chrome扩展程序。

从技术上讲,你可以编写任何可以编译成JavaScript的东西,比如Dart或TypeScript。

请参阅此处以获得简要介绍:https://developer.chrome.com/extensions

答案 4 :(得分:0)

使用Blazor并将其编写为普通的html / css吧?尽管您仍然需要构建blazor项目,但我认为使用C#编写扩展在技术上是可能的

答案 5 :(得分:0)

现在借助 Blazor WebAssembly,您绝对可以使用 C# 轻松创建 Chrome 扩展程序(相当)。

如果您仍然有兴趣尝试或其他人有兴趣,我已在存储库 Blazor.BrowserExtension 中创建了一个包。只需按照链接中的步骤创建项目即可。

有了这个包,你就可以在扩展中获得你需要的东西。目前它支持背景、弹出窗口(浏览器操作)、选项页面甚至内容脚本(需要额外设置)。只需构建项目,然后您就可以从构建的输出中加载解压后的扩展。

Chrome 扩展 API 可在 Razor 页面或从依赖注入访问。 API 是从另一个包 WebExtension.Net 导入的。