使用C#编写Chrome扩展?

13

今天我第一次研究Chrome扩展,有一个非常愚蠢的问题,根据谷歌搜索结果来看,我确定答案是否定的,但我只是想从这里的社区确保一下。

  1. 是否可以使用C#编写代码而不是javascript?
  2. 在chrome扩展中是否可以使用偏视图(ASP.NET MVC)作为渲染HTML的方法?
  3. 我在VS Marketplace上找到了这个https://marketplace.visualstudio.com/items?itemName=MadsKristensen.GoogleChromeExtensionProjectTemplate 还有其他带有bootstrap等的模板吗?

干杯


2
我会从这里开始 什么是扩展?,如果它没有记录,那可能是不可能的。 - rmjoia
你需要分发JavaScript,因此任何能够生成JavaScript的东西都可以。 - Keith Nicholas
6个回答

38

您可以使用C#创建浏览器扩展程序。

具体来说,可以使用客户端Blazor。

要发布扩展程序,需要执行以下操作:

首先,像普通独立应用程序一样发布。https://learn.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


7

现在有了Blazor WebAssembly的帮助,您可以相对轻松地使用C#创建Chrome扩展。

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

使用此包,您可以获得扩展所需的内容。它目前支持Background、Popup(浏览器操作)、Options页面甚至Content Scripts(需要额外的设置)。只需构建项目,然后您就可以从构建输出中加载未打包的扩展。

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


7

你可以用C#编写Chrome扩展程序,而且很容易。

我尝试了以下步骤,速度很快并且立即有效:

  • 运行dotnet new --install Blazor.BrowserExtension.Template安装模板。
  • 运行dotnet new browserext --name以使用该模板初始化一个新的项目。
  • 将工作目录更改为新创建的项目目录。
  • 运行dotnet build来构建项目。

在Google Chrome上:

  • 启动扩展页面(⋮→更多工具→扩展)。
  • 开启开发者模式。
  • 点击"加载已解压的扩展程序"按钮,然后导航到%ProjectDir%\bin\Debug\net5.0\并选择文件夹browserextension。

来源:https://github.com/mingyaulee/Blazor.BrowserExtension

非常感谢“mingyaulee”提供如此棒的工具和分享。


1
如果您想要立即测试某些内容,甚至有准备好使用的示例项目:https://github.com/mingyaulee/Blazor.BrowserExtension.Samples - bobt

5

更新:

您可以使用基于C#的https://github.com/mingyaulee/Blazor.BrowserExtension项目并构建您的Chrome扩展程序。

原始答案:

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

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

请查看:https://github.com/Ehesp/Chrome-Extension-Twitter-Bootstrap-3-Template


1

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


1

从技术上讲,您可以使用C#二进制文件作为本机主机,与浏览器中的JavaScript部分通信。

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

只有在您有合法理由执行浏览器沙盒内不可能完成的操作时,才应使用此方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接