1

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

我正在寻找类似的东西

AssemblyTitleAttribute title = "Full Version";

但这一个不起作用,有什么想法吗?

4

4 回答 4

3

该属性是一个编译时间常数,因此它不能是“在构造函数中”,您有两个选择:

  1. 完整版独有的类具有[assembly: AssemblyTitle("Sandbox Console")](在声明命名空间之前放置)
  2. 使用#ifAssemblyInfo.cs 中的 a 来选择名称并设置构建环境以在Conditional Compilation SymbolsPropertiesBuild选项卡中定义指令。
// 组装信息.cs

//(截图)

[程序集:AssemblyCopyright("Copyright © 2011")]
[组装:组装商标(“”)]
[组装:组装文化(“”)]
#if 完整版本
    [程序集:AssemblyTitle("XYZ App (完整版)")]
#别的
    [程序集:AssemblyTitle("XYZ App (试用版)")]
#万一

于 2013-01-09T20:49:23.270 回答
1

您可以在 AssemblyInfo.cs 文件中进行设置。我认为您无法在其他地方更改它。无论如何,您无法在运行时动态设置它,因此不妨将其设置在自定义类中。

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

于 2013-01-09T20:41:56.807 回答
0

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

如果您需要动态应用程序标题,请使用其他内容。

于 2013-01-09T20:50:07.293 回答
0

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

于 2013-01-09T20:55:11.767 回答