如何以编程方式更改 C# 中的程序集名称
Posted
技术标签:
【中文标题】如何以编程方式更改 C# 中的程序集名称【英文标题】:How to change the Assembly Name in C# Programmatically 【发布时间】:2010-11-28 08:39:15 【问题描述】:我想在 C# 中以编程方式更改我的程序集的名称,有一种方法可以从项目属性中更改它,但我想以编程方式更改它,以便更改我的输出 .exe 名称。任何把戏?
【问题讨论】:
您的意思是要为Visual Studio 编写一个插件来编辑项目文件以更改程序集的输出名称吗? 你打算在编译时这样做吗? 我希望它在编译时更改,你可以说,这样我就可以动态更改输出 exe 的名称..(基于一些条件语句) 您只想更改项目文件中的 OutputPath 吗?否则你会遇到很多即时更改的问题,没有自定义的 msbuild 工作来动态修改或创建临时项目等。调试可能会很痛苦! 【参考方案1】:您可以在构建后事件中执行此操作。这些脚本是在构建过程完成后执行的命令行脚本
ren "$(TargetFileName)" new-filename.exe
编辑:
您可以通过右键单击 Visual Studio 中的项目并选择属性来配置 Postbuild 事件。那里有一个名为 Buildevents 的选项卡。 Prebuild 有一个,Postbuild 有一个。在底部,您可以选择应该在什么情况下运行脚本。此描述假定您使用的是 Visual Studio 2008。事件在早期版本中也可用,并且到达它们的方式应该类似(抱歉,不记得确切的方法)。
注意:如果程序集文件名有空格,则在两个引号之间插入
$(TargetFileName)
,如下所示:"$(TargetFileName)"
【讨论】:
您能告诉我如何配置构建后事件吗? 更改文件名不会更改程序集名称。如果我在项目设置中将 Foo 作为我的程序集名称,然后将其重命名为 Bar.dll,然后在反射器中打开它,名称仍将显示为 Foo。【参考方案2】:在构建后事件中,这应该可以解决问题:
if <Condition> == <truevalue> xcopy output.dll newassembly.dll /y /s /d
要配置构建后事件:右键单击解决方案资源管理器中的项目,单击属性,然后单击构建事件。
【讨论】:
更改文件名不会更改程序集名称。如果我在项目设置中将 Foo 作为我的程序集名称,然后将其重命名为 Bar.dll,然后在反射器中打开它,名称仍将显示为 Foo。 问题中有两次,OP 明确表示他或她想要更改 .exe 文件的名称。 “我的程序集名称”不是“程序集名称”,而是“我的输出 .exe 名称”。以上是关于如何以编程方式更改 C# 中的程序集名称的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 C# 以编程方式更改 RingCentral 中的用户存在状态?