在.NET中重命名第三方dll

9

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

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

我想将DocumentFormat.OpenXml.dll重命名为CATBldHashCodeSupporterDll.dll。有人能给出如何实现这一点的建议吗?


1
为什么要隐藏您使用OpenXML的事实? - alzaimar
1
实际上,我制作了一个工具,被另一个客户使用,并且他们想要提供自己的命名约定,你有任何相关的想法吗? - Alpa
1
你可能会在这里找到答案:http://stackoverflow.com/questions/4683913/renaming-icsharpcode-sharpziplib-dll - alzaimar
我已经阅读了它,但是我没有找到任何有用的东西。 - Alpa
那么请阅读这篇文章并尝试按照说明进行操作。 - alzaimar
显示剩余5条评论
3个回答

5

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

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

或者你可以监听AppDomain.AssemblyResolve事件,这样一旦JITer无法找到重命名的DLL,你就有机会加载它。


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

1
如果您不介意弄脏一些,可以使用文本编辑器修改您的.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>

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

我想重命名dll,因此这样做了,但如果我删除像xr这样的内容,只使用CommonInterlop,它会在没有xr的情况下加载一秒钟,然后自动重命名回带有xr的名称。我猜是因为在提示路径内仍然有xr。 - user13879368

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