在构造函数c#中设置汇编标题

本文关键字:汇编 标题 设置 构造函数 | 更新日期: 2023-09-27 17:51:05

基本上我想在我的构造函数中设置AssemblyTitle,这样做的原因是因为我有几个版本的程序,它们都共享相同的AssemblyInfo.cs

我正在寻找这样的东西

AssemblyTitleAttribute title = "Full Version";

但是这个不行,有什么主意吗?

在构造函数c#中设置汇编标题

该属性是一个复杂的时间常数,所以它不能是"在构造函数中",你有两个选择:

  1. 完整版本中唯一的类有[assembly: AssemblyTitle("Sandbox Console")](放在声明命名空间之前)
  2. 在AssemblyInfo.cs中使用#if来选择名称并设置构建环境,以便在属性的Build选项卡中定义Conditional Compilation Symbols中的指令。
<>之前//AssemblyInfo.cs//(剪)[assembly: AssemblyCopyright("版权©2011")][组装:AssemblyTrademark (" "))[组装:AssemblyCulture (" "))#如果FULL_VERSION[assembly: AssemblyTitle("XYZ应用程序(完整版本)")]其他#[assembly: AssemblyTitle("XYZ App(试用版)")]# endif

可以在AssemblyInfo.cs文件中设置。我觉得别的地方也改不了。无论如何,你不能在运行时动态地设置它,所以最好在自定义类中设置它。

您需要重新编译程序集才能更改名称。

该属性附加到已编译的程序集,不能在运行时修改。除非您更改它并编写新的程序集文件(按照MSDN示例:http://msdn.microsoft.com/en-us/library/system.reflection.assemblytitleattribute.aspx)。

如果你需要一个动态的应用程序标题,使用其他的

Visual Studio项目模板默认生成"AssemblyInfo.cs",但这只是一个默认位置。实际上,您可以将该属性放置在您想要的任何文件中。唯一的限制是你必须把它放在"汇编作用域"中,所以下面的代码不能工作:

namespace MySpace
{
    [assembly: System.Reflection.AssemblyVersion("1.0.0.0")]
}

同样适用于类和所有其他块(都不工作)。

class MyPlace
{
    [assembly: System.Reflection.AssemblyVersion("1.0.0.0")]
}

源代码中指定的程序集信息在编译过程中嵌入到输出程序集中,因此无法用代码"动态"更改值(因为代码只在稍后的运行时执行)。

我个人非常喜欢在所有本地工作中坚持使用默认版本。然后由构建服务器(Teamcity或Team Foundation server)触发的某种构建脚本设置程序集的正确版本。

如果您以后真的想更改程序集的任何属性,您可能需要查看http://www.mono-project.com/Cecil