【发布时间】:2020-06-04 20:45:21
【问题描述】:
构建类库后,我的 bin/Debug 目录中有几个 .dll(一些来自我自己的项目,而另一些来自第三方库)。例如,
MyLibrary.dll
Newtonsoft.Json.dll
NLog.dll
我想重命名这些程序集,以便它们包含它们的版本号。例如,
MyLibrary-1.0.0.0.dll
Newtonsoft.Json-10.0.3.0.dll
NLog-2.0.0.0.dll
最好的方法是什么?我不能只重命名文件。我需要自己更改程序集名称,并将这些更改传播到依赖它们的任何东西。
到目前为止,我已经找到了以下解决方案(参见https://stackoverflow.com/a/21753873/1383366):
ildasm /all /out=MyLibrary.il MyLibrary.dll
ilasm /dll /out=MyLibrary-1.0.0.0.dll MyLibrary.il
我不仅不确定这是否足以正确更改程序集名称,而且我不知道传播名称更改的最佳方式。
【问题讨论】:
-
为什么需要这样做以及目前使用的是哪个 .NET 版本?
-
在 Linux 上,他们使用版本扩展名命名文件,并将简单名称链接到版本化名称。这样,您可以轻松恢复。
-
@PavelAnikhouski 我们在大多数项目中使用 .NET 4.0,而一些项目使用 .NET 4.5。我们想要这样做的原因:我们的库是第三方应用程序(在我们控制之外)的插件,它将我们的库加载到主 AppDomain 中。我们不希望与可能引用某些相同库的其他插件产生任何冲突。
-
所以你选择了最糟糕的解决方案来解决我们一无所知的问题。看看 ILMerge 实用程序吧。
-
@HansPassant 我没有选择解决方案。我寻求帮助,并试图通过展示我找到的解决方案来提供帮助。如果我的问题不清楚,您可以通过询问要澄清的内容来帮助我。我会研究一下ILMerge。谢谢。
标签: c# .net visual-studio .net-assembly