Toon posts:

[VB.NET]Uitlezen AssemblyVersionAttribute gaat fout.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een plug-in voor een applicatie. Een onderdeel van de plug-in is het tonen van een 'About' form. Op deze form wil ik de gegevens uit de assembly zetten.
Ik heb hier voor een class gevonden die dat voor me regelt.
Hier een deel van die class als voorbeeld:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Imports SR = System.Reflection
Public Class clsAppInfo
    Dim m_AssInfo As System.Reflection.Assembly
    Sub New()
        m_AssInfo = System.Reflection.Assembly.GetExecutingAssembly
    End Sub
    Public ReadOnly Property Company() As String
        Get
            Dim m_Company As SR.AssemblyCompanyAttribute
            m_Company = m_AssInfo.GetCustomAttributes(GetType(SR.AssemblyCompanyAttribute), False)(0)
            Return m_Company.Company.ToString
        End Get
    End Property
End Class


Dit werkt prima. Maar ik wil ook het versienr op het form hebben. Het versienr staat als volgt in AssemblyInfo.vb:
Visual Basic .NET:
1
<Assembly: AssemblyVersion("0.1.*")> 


Ik probeer de class aan te passen maar ik krijg geen versienr terug, sterker nog een exception treedt op: 'Out of bounds'.
Visual Basic .NET:
1
2
3
4
5
6
7
    Public ReadOnly Property Version(ByVal sFormat As String) As String
        Get
            Dim m_Version As SR.AssemblyVersionAttribute
            m_Version = m_AssInfo.GetCustomAttributes(GetType(SR.AssemblyVersionAttribute), False)(0)
            Return System.String.Format(sFormat, m_Version.Major,  m_Version.Minor, m_Version.Build, m_Version.Revision)      
      End Get
    End Property


Kan iemand me in de juiste richting sturen? Ik heb al veel tutorials gelezen maar dat heeft niet geholpen.

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Je hebt sFormat als "{0}.{1}.{2}.{3}" doorgegeven? Er is geen {4}..

Werkt het wel als je "abc" als sFormat doorgeeft? Post anders eens de volledige foutmelding want die bevat informatie welke je hier niet hebt beschreven..

If it isn't broken, fix it until it is..


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
waarom doe je het niet gewoon zo?
C#:
1
Assembly.GetExecutingAssembly().GetName().Version;

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
In vb6 had je gewoon App.Major App.Minor App.Revision

In .Net zit ook een "App" classe deze heet alleen "Application" met

Application.ProductVersion kun je de versie uitlezen

~ Mijn prog blog!


Verwijderd

Topicstarter
Een wat late reactie, maar ik had eerder geen tijd om het uit te zoeken.
Het werkt inderdaad zoals rwb het voorstelt.

Voor het archief hier de code:
Visual Basic .NET:
1
2
3
4
5
6
7
    Public ReadOnly Property Version(ByVal sFormat As String) As String
        'Example of sFormat: Version {0}.{1:00}.{2}.{3}
        Get
            Dim m_Version As Version = m_AssInfo.GetName.Version
            Return System.String.Format(sFormat, m_Version.Major, m_Version.Minor, m_Version.Build, m_Version.Revision)
        End Get
    End Property


Bedankt voor het meedenken.