我可以将自定义版本字符串添加到 .net DLL 中吗?

5
我可以通过手动编辑.rc文件,在Visual Studio中为C++ DLL添加自定义版本字符串。例如,如果我在.rc文件的VersionInfo部分添加:
VALUE "BuildDate", "2008/09/19 15:42:52"

那么该日期将在文件浏览器中的DLL属性下版本选项卡中可见。

我能否对C# DLL执行相同操作?不仅是构建日期,还包括其他版本信息(例如源代码控制信息)

更新:我认为可以通过嵌入Windows资源来实现此操作,因此我已经询问如何做到这一点

2个回答

5
在Khoth的回答上进行扩展,在AssemblyInfo.cs文件中:
你可以这样做:
[assembly: CustomResource("Build Date", "12/12/2012")]

CustomResource的定义如下:

[AttributeUsage(AttributeTargets.Assembly)]
public class CustomResourceAttribute : Attribute
{        
    private string the_variable;
    public string Variable  {get { return the_variable; }}

    private string the_value;
    public string Value     {get { return the_value; }}

    public CustomResourceAttribute(string variable, string value)
    {
        this.the_variable = variable;
        this.the_value = value;
    }
}

这个方案很好,因为它给予您所需的灵活性,并且不会引起任何编译器警告。

不幸的是,由于在属性中输入的值必须是常量,而DateTime不是常量,因此无法使用DateTime。


1
仍有两个问题:第一个问题是,你只能这样添加一个CustomResourceAttribute;我认为你需要在AttributeUsage属性中添加“AllowMultiple = true”。第二个问题是,自定义资源不会显示在版本选项卡中——我该怎么做才能让它们显示出来? - Simon
你是正确的,我忘记了 AllowMultiple。我会在今天午餐时尝试获取数据,以显示在版本选项卡上。 - KyleLanser
抱歉,现在没时间,我会在周末处理它。 - KyleLanser

4
在AssemblyInfo.cs文件中,您可以添加以下内容:
[assembly: System.Reflection.AssemblyInformationalVersion("whatever you want")]

如果它不是像1.2.3.4这样的数字,那么这就是编译器警告,但我相当确定一切都会正常工作。


谢谢 - 这显示为“产品版本”,这可能是可接受的解决方法。我真正想要的是能够看到“构建日期”显示为属性名称。 - Simon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接