How can I make the AssemblyInfo version of a C# .NET CF program propagate to the Explorer Properties window?

我们两清 提交于 2019-12-23 12:41:20

问题


It seems like if you compile a Visual Studio solution and have a version # in your AssemblyInfo.cs file, that should propagate to say, the Windows Explorer properties dialog. This way, someone could simply right click on the *.exe and click 'properties' to see the version #. Is there a special setting in Visual Studio to make this happen?

example picture http://content.screencast.com/users/Pincas/folders/Jing/media/40442efd-6d74-4d8a-8e77-c1e725e6c150/2008-09-24_0849.png

Edit: I should have mentioned that this is, specifically, for .NET Compact Framework 2.0, which doesn't support AssemblyFileVersion. Is all hope lost?


回答1:


Note, that the AssemblyFileVersion attribute is not available under .NET Compact Framework!

See this article from Daniel Mooth for a workaround.




回答2:


NOTE: This answer is for accessing the AssemblyInfo properties within a .NET CF 3.5 application. It does not propagate to the executable's "Properties" inside of Windows Explorer (but could be used to write to a file, to the console, or to display in the application)

I know this is a very old question, but here is a solution I found using Reflection and Linq to get the "AssemblyInformationalVersion" (product version in newer Visual Studio projects).

First, I added this to the AssemblyInfo.cs (replace the string with whatever you want to use):

[assembly: AssemblyInformationalVersion("1.0.0.0 Alpha")]

Then, you can use this method to pull out the attribute (I placed it inside a static class in the AssemblyInfo.cs file). The method get's an array of all Assembly attributes, then selects the first result matching the attribute name (and casts it to the proper type). The InformationalVersion string can then be accessed.

//using System.Reflection;
//using System.Linq;
public static string AssemblyInformationalVersion
{
    get
    {
        AssemblyInformationalVersionAttribute informationalVersion = (AssemblyInformationalVersionAttribute) 
            (AssemblyInformationalVersionAttribute.GetCustomAttributes(Assembly.GetExecutingAssembly())).Where( 
                at => at.GetType().Name == "AssemblyInformationalVersionAttribute").First();

        return informationalVersion.InformationalVersion;
    }
}

To get the normal "AssemblyVersion" attribute I used:

//using System.Reflection;
public static string AssemblyVersion
{
    get
    {
        return Assembly.GetExecutingAssembly().GetName().Version.ToString();
    }
}



回答3:


Does the AssemblyFileVersion attribute help?




回答4:


You need to add another attribute:

[assembly: AssemblyFileVersion("1.0.114.0")]

Note that you still need the AssemblyVerison one as well to correctly identify the assembly to the .NET runtime.




回答5:


The version number does propagate through to the "Version" tab in the properties dialogue but not through to the summary. Unfortunately VS will not auto-populate the summary information of a file as the information is meta-data attached to the file itself. You can however access and manipulate the summary information yourself by using the free DSO OleDocument Properties Reader from Microsoft.

You can acquire the library from: http://www.microsoft.com/downloads/details.aspx?FamilyId=9BA6FAC6-520B-4A0A-878A-53EC8300C4C2&displaylang=en

Further information on its use can be found at: http://www.developerfusion.co.uk/show/5093/

EDIT: As noted above by pb and Nigel Hawkins you can get the property to propogate by using the AssemblyFileVersion attribute like:

[assembly: AssemblyFileVersion("1.0.114.0")]



回答6:


I'm not sure that RevisionNumber is the correct field to be looking for.

Try explorer, right click -> version tab, and look at the AssemblyVersion field there.




回答7:


in my project we use FileVersion = YYYY.MM.DD.BUILD (e.g., 2008.9.24.1) but the ProductVersion should be major.minor.revision.BUILD. we use the AssemblyInformationalVersion to get around this.

AssemblyVersion="MAJ.MIN.REV.1" --> used by .NET

AssemblyInformationalVersion="MAJ.MIN.REV.XXX" --> used in explorer's ProductVersion

AssemblyFileVersion="YYYY.MM.DD.XXX" --> used in explorer's FileVersion



来源:https://stackoverflow.com/questions/126926/how-can-i-make-the-assemblyinfo-version-of-a-c-sharp-net-cf-program-propagate-t

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!