如何以编程方式更改 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 中的用户存在状态?

如何在 ASP.NET C# 中检索程序集信息窗口的文件版本 [重复]

如何在 C# 中以编程方式安装 Windows 服务?

C#如何在签入策略期间获取挂起更改的程序集

无法以编程方式删除 SMS(默认 SMS 应用程序集)

C#提示未能找到类型或命名空间名称”Renderer“(是不是缺少 using 指令或程序集引用)怎么解决?