我的 Fiddler 安装了许多插件,有一些插件存在 DLL 名冲突问题,比如多个不同的插件都存在名为 PluginCore.dll 但实际实现逻辑完全不相同的程序集。这就导致了多个插件的安装之间,如果没有将其放入到单独的文件夹内,将会因为文件名相同而冲突,让插件不能同时都安装。本文将和大家介绍 Fiddler 官方提供的将插件放在独立子文件夹的方法,用来解决 DLL 命名冲突

在 Fiddler 里,安装自定义插件给到 Fiddler 的最通用的方法就是将插件 DLL 和插件的依赖程序集拷贝到 %USERPROFILE%\Documents\Fiddler2\Scripts 文件夹里面,也就是 我的文档\Fiddler2\Scripts 文件夹里面

直接拷贝 DLL 到 我的文档\Fiddler2\Scripts 文件夹里面将可能遇到本文开始提到的 DLL 名冲突的问题。解决方法就是将插件放入到 Scripts 文件夹里面的里层文件夹内。放入到里层文件夹内需要遵循以下的规则才会被 Fiddler 当成插件加载

  • 子文件夹必须是采用 .ext 结尾
  • 放入到子文件夹的插件需要使用 Fiddler 开头,满足 Fiddler*.dll 通配符

接下来是详细的介绍,我所在的团队开发了一个名为 Friday 的插件,这个插件就是周五了,差不多快周六了的意思。我将使用这个插件和大家介绍如何将这个插件放入到 Fiddler 的 Scripts 文件夹里面的里层文件夹内

先将插件程序集的命名修改满足 Fiddler*.dll 规则,如将 Firday 插件命名为 FiddlerFridayPlugin 程序集。修改程序集名,可以右击项目属性,修改程序集。也可以编辑 csproj 项目文件,修改 AssemblyName 属性,如以下代码

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- 根据 Fiddler 插件的要求,放入到子文件夹里面的插件,必须采用 Fiddler 开头,符合 Fiddler*.dll 才能被加载。因此这里修改程序集名,让输出程序集满足要求 -->
<AssemblyName>FiddlerFridayPlugin</AssemblyName>
</PropertyGroup>
</Project>

接着在 我的文档\Fiddler2\Scripts 文件夹里面新建一个子文件夹,要求这个子文件夹使用 .ext 结尾,比如 FiddlerFridayPlugin.ext 类似的命名格式

将构建输出的插件 DLL 等文件拷贝到上一步创建的子文件夹,完成之后的文件夹大概如下

C:\Users\YourName\Documents\Fiddler2

└─Scripts

└─FiddlerFridayPlugin.ext
├FiddlerFridayPlugin.dll
├FiddlerFridayPlugin.pdb
├HandyControl.dll
├Jgrass.FiddlerPlugin.dll
└Newtonsoft.Json.dll

如此即可将插件放在独立的文件夹里面,防止和其他插件命名冲突

在日常开发中,如果想要让开发更加方便,可以编辑 csproj 项目文件,让插件构建输出到子文件夹里面,以下是项目文件代码

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>net48</TargetFramework>
<Nullable>enable</Nullable>
<UseWPF>true</UseWPF>
<LangVersion>latest</LangVersion>
<!-- 根据 Fiddler 插件的要求,放入到子文件夹里面的插件,必须采用 Fiddler 开头,符合 Fiddler*.dll 才能被加载。因此这里修改程序集名,让输出程序集满足要求 -->
<AssemblyName>FiddlerFridayPlugin</AssemblyName>
<!-- 不要添加 net48 文件夹 -->
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<!-- 根据 Fiddler 插件的要求,放入到子文件夹里面的插件,必须放入到后缀为 .ext 文件夹里面 -->
<OutputPath>..\Bin\$(Configuration)\$(AssemblyName).ext\</OutputPath>
</PropertyGroup> <ItemGroup>
<Reference Include="Fiddler">
<HintPath>你的Fiddler文件夹\Fiddler.exe</HintPath>
<Private>false</Private>
</Reference>
<Reference Include="System.Web" />
</ItemGroup> <!--<Target Name="KillFiddler" BeforeTargets="PreBuildEvent">
<Exec Command="taskkill /F /IM Fiddler.exe" />
</Target>--> <Target Name="CopyOutput" AfterTargets="PostBuildEvent">
<Exec Command="xcopy ..\\Bin\\Debug %USERPROFILE%\\Documents\\Fiddler2\\Scripts /s /e /y" />
</Target> </Project>

大家可以拷贝以上的 csproj 项目格式文件替换自己插件的 csproj 项目文件内容,记得更改 AssemblyName 为你期望的插件名即可,记得替换的时候保持使用 Fiddler 开头

另外还需要替换 你的Fiddler文件夹\Fiddler.exe 为你真正的 Fiddler 安装路径,如此才能让项目对 Fiddler 进行引用

使用以上的 csproj 项目格式制作的插件,可以在构建完成之后,自动给 Fiddler 安装上

细心的伙伴还可以看到注释掉的 KillFiddler 代码,这是因为插件的安装是需要重启 Fiddler 的,而且如果 Fiddler 正在运行过程中,旧版本插件还被引用,需要杀掉 Fiddler 才能覆盖插件文件。根据大家自己的需求,可以自己去掉注释,这样就可以在构建过程自动杀掉 Fiddler 应用

Fiddler 将插件放在独立子文件夹的更多相关文章

  1. MVC文件上传09-使用客户端jQuery-File-Upload插件和服务端Backload组件让每个用户有专属文件夹,并在其中创建分类子文件夹

    为用户创建专属上传文件夹后,如果想在其中再创建分类子文件夹,该怎么做?可以在提交文件的视图中再添加一个隐藏域,并设置 name="uploadContext". 相关兄弟篇: MV ...

  2. C#遍历指定文件夹中的所有文件和子文件夹

    参考:http://www.cnblogs.com/skylaugh/archive/2012/09/23/2698850.html DirectoryInfo TheFolder=new Direc ...

  3. ci 的控制器文件夹下开加子文件夹

    在一个比较大的项目中,希望controllers下再细分子文件夹.例如:controllers/pj,controllers/xxk等. 做法是: 1.在controllers下添加相关的子文件夹,例 ...

  4. CKFinder根据用户设置权限,不同用户有自己的私有的、独立的文件夹

    CKFinder 默认情况下多个用户共用同一个图片目录.所有上传的图片和Flash全部保存在同一个文件夹(默认为 userfiles)内.     现在想实现:     第1个需求:不同用户有自己的私 ...

  5. 文件夹中含有子文件夹,修改子文件夹中的图像存储格式(python实现)

    文件夹中含有子文件夹,修改子文件夹中的图像存储格式,把png图像改为jpg图像,python代码如下: import os import cv2 filePath = 'C:\\Users\\admi ...

  6. Fiddler高级技巧 - 映射路径到本地文件夹

    适用场景: 你是前端开发人员,要开发一个小模块,需要用到线上的环境(账号.数据.跨域等),但你又没有权限往线上传文件 你是移动测试人员,需要将一组接口的返回结果替换为另一组,最简单的办法就是使用Fid ...

  7. ThinkPHP第十二天(Import导入第三方类库方法,独立分组文件夹结构)

    1.Import(路径+类名,基础路径): 平时导入类时有三种基础路径:Think:import('Think.core.Action');Think表示ThinkPHP/Lib基础路径,完整路径为T ...

  8. gulp插件实现压缩一个文件夹下不同目录下的js文件(支持es6)

    gulp-uglify:压缩js大小,只支持es5 安装: cnpm: cnpm i gulp-uglify -D yarn: yarn add gulp-uglify -D 使用: 代码实现1:压缩 ...

  9. android 内部存储相关知识点: getfilestreampath getDir 子文件夹

    文件系统的API的命名方式和常规的不一样: 都是get命名,但是功能就是能创建文件夹...   这种方式的API 命名习惯和常规的不一样...  createXXX ----方便查找 http://i ...

  10. C# 在本地创建文件夹及子文件夹

    string dict = @"d:\估价报告\"; if (!Directory.Exists(dict)) { Directory.CreateDirectory(dict); ...

随机推荐

  1. github 镜像地址

    亲测可用的 github 镜像地址: https://hub.nuaa.cf , https://hub.fgit.cf

  2. javascript 把嵌套的 map 转成 object,再转 json 字符串

    使用 JSON.stringify 转 map 时发现并没有转成想要的 JSON 数据,搜索发现要转成 Object 才能够转成完整的 JSON, 用递归转换: const message = new ...

  3. Scratch基础(一):安装和了解软件

    Scratch基础(一):安装和了解软件 编写计算机程序代码的能力是当今社会读写能力的重要组成部分.当人们学习使用Scratch进行编码时,他们将学习解决问题,设计项目和交流思想的重要策略. 1.安装 ...

  4. C# Winform 图片 Base64 转换

    //图片 转为 base64编码的文本 private void button1_Click(object sender, EventArgs e) { OpenFileDialog dlg = ne ...

  5. 为什么医疗保健需要MFT来帮助保护EHR文件传输

    毫无疑问,医疗保健行业需要EHR技术来处理患者,设施,提供者等之间的敏感患者信息.但是,如果没有安全的MFT解决方案,您将无法安全地传输患者文件,从而使您的运营面临遭受数据泄露,尴尬,声誉损失以及随之 ...

  6. 聊聊大模型"打字机"效果的背后技术——SSE

    SSE:Server Sent Event:服务器发送事件. Server-Sent Events(SSE)是一种由服务器向客户端推送实时数据的技术.它是构建基于事件的.服务器到客户端的通信的一种方法 ...

  7. KingabseES例程-函数和过程的 INVOKER 与 DEFINER

    调用者权利和定义者权利子句 指定子程序的权利属性.权利属性影响单元在运行时,执行的SQL语句的名称解析和权限检查. PG模式: SECURITY INVOKER SECURITY DEFINER Or ...

  8. Websphere更新应用文件

    说明: 由于war包中存在安全漏洞或者需要变更里面的某个jar包,此处列举了两种更新方法,不需要重启服务器,只需重启应用. Websphere对部署好的应用更新jar包方法如下:   方式一.手动替换 ...

  9. 开发指导—利用组件&插值器动画实现HarmonyOS动效

    一. 组件动画 在组件上创建和运行动画的快捷方式.具体用法请参考通用方法. 获取动画对象 通过调用animate方法获得animation对象,animation对象支持动画属性.动画方法和动画事件. ...

  10. 重新点亮linux 命令树————目录相关[三]

    前言 简单介绍一些目录命令 正文 主要介绍三个命令 cd 路径切换 cd 这个命令用于切换当前目录的. 切换有三种形式. 以/开头的是绝对路径,比如/home. 以.开头的是相对路径,比如说./ser ...