【问题标题】:renaming a third party dll in .net在 .net 中重命名第三方 dll
【发布时间】:2013-01-09 07:07:00
【问题描述】:

我使用名为“DocumentHashcode”的控制台应用程序创建了一个工具,其中我使用了第三方 DLL - DocumentFormat.OpenXml.dll

当我要部署它时,我使用DocumentHashcode.exeDocumentFormat.OpenXml.dll 来运行应用程序。

我想将DocumentFormat.OpenXml.dll 重命名为CATBldHashCodeSupporterDll.dll。谁能建议如何实现这一目标?

【问题讨论】:

  • 你为什么要隐藏你使用 OpenXML 的事实?
  • 其实我做了一个工具,被另一个客户使用,他们想给自己的命名方便,这就是原因。你对此有什么想法吗?
  • 您可能会在这里找到答案:stackoverflow.com/questions/4683913/…
  • 我已经阅读了它,但我没有发现任何有用的东西。
  • 谁能建议我如何更改第三方 dll 的名称?

标签: c# .net dll


【解决方案1】:

您需要手动加载程序集。最简单的方法是在 JITer 尝试加载 DocumentFormat.OpenXml 命名空间之前加载它。您可以像这样手动加载它:

var dllPath = Path.Combine(Directory.GetCurrentDirectory(), "reNamed.dll");
Assembly.LoadFile(dllPath);

您也可以收听AppDomain.AssemblyResolve event,一旦 JITer 找不到它,您就有机会加载重命名的 DLL。

【讨论】:

    【解决方案2】:

    您也可以尝试使用新名称重新组装 DLL 文件。 详情请查看 Stackoverflow 中的最后一个答案:Renaming ICsharcode-dll

    【讨论】:

      【解决方案3】:

      如果您不介意有点脏,您可以使用文本编辑器来修改您的 .csproj 文件。例如,如果您的 .dll 是 xr-CommInterop.dll,您应该找到一些 XML,例如:

      <Reference Include="xr-CommInterop, Version=3.0.0.0, Culture=neutral, processorArchitecture=AMD64">
        <SpecificVersion>False</SpecificVersion>
        <HintPath>C:\Mypath\xr-CommInterop.dll</HintPath>
      </Reference>
      

      如果您将第一个 xr-CommInterop(在 Reference Include="... 中)更改为仅 CommInterop 并重新加载项目,您会发现该引用现在具有不同的名称。

      【讨论】:

      • 我也想重命名 dll,因此这样做了,但如果我像 xr 一样删除并只使用 CommonInterlop ,它会在没有 xr 的情况下再次加载,然后自动重命名为拥有 xr。我猜是因为在提示路径中它仍然有 xr tho
      猜你喜欢
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2022-11-21
      相关资源
      最近更新 更多