我正在寻找一种在构建过程中重命名第 3 方程序集中的命名空间的方法(以及用户代码中相应的 using 语句)。我搜遍了福迪的织工,但没有找到这样的东西。有一个对 ILRepack 的拉取请求可以完成确切的事情,但它似乎已经过时并且没有通过 CI:https://github.com/gluck/il-repack/pull/268 https://github.com/gluck/il-repack/pull/268
假设我有两个项目,A 和 B,两者都是 nugetized,并且 B 对 A 具有包依赖性。由于我不想在引用 B 时将使用者锁定在 A 上的特定版本上,所以我使用 ILRepack 将 A 合并到 B 中,并在那里内部化 A,但是,尽管 A 被内化到 B 中,但当消费者在其项目 C 中使用 A 和 B 时,A 中的类仍存在类型歧义。
NEST 包(elasticsearch 客户端https://github.com/elastic/elasticsearch-net https://github.com/elastic/elasticsearch-net)已经用 Newtonsoft.Json 包完成了完全相同的事情。
我已经想通了。有两种解决方案:
ILRepack
ILRepack 有选项Internalize
and RenameInternalized
. Internalize
将合并程序集的公共修饰符更改为内部,同时RenameInternalized
将为这些类型名称附加一些随机指南。所有用法也都被正确重命名。
汇编重写器
https://github.com/nullean/ assembly-rewriter https://github.com/nullean/assembly-rewriter
用于重写程序集和重命名命名空间的 Dotnet 工具。它仅限于与程序集文件名相同的根命名空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)