Ich habe einen Code erstellt, um die Versionsnummer eines Verzeichnisnamens zu erhalten, zum Beispiel diesen Ordner mit dem Namen Update5.0.1. Ich brauche nur den "5.0.1" -Teil. Ich gehe den Verzeichnispfad zu dieser Funktion:Fehler beim Abrufen der Versionsnummer eines Verzeichnisnamens
public int CompareVersion(string NovoUpdate, string Config)
{
int Status = 0;
try
{
ExeConfigurationFileMap configOld = new ExeConfigurationFileMap();
configOld.ExeConfigFilename = Config;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configOld, ConfigurationUserLevel.None);
if (config.AppSettings.Settings["Version"] != null)
{
string value = config.AppSettings.Settings["Version"].Value.ToString();
Version ver = Version.Parse(value);
Version version = null;
Version VersionFinal = null;
var lastVersion = new DirectoryInfo(NovoUpdate).FullName;
//.Where(d => d.Name.StartsWith("UPDATE_"))
.Select(d => new { Directory = d, Token = d.Name.Split('_') })
.Where(x => x.Token.Length == 3 && Version.TryParse(x.Token[2], out version))
.Select(x => new { x.Directory, Date = x.Token[1], Version = version })
.OrderByDescending(x => x.Version)
.FirstOrDefault();
if (lastVersion != null)
{
VersionFinal = Version.Parse(lastVersion.ToString());
}
if (ver >= VersionFinal)
Status = 1;
else
Status = 0;
}
else Status = -1;
}
catch (Exception ex)
{
Erro NovoErro = new Erro();
Program.Erro = ex.ToString();
NovoErro.ShowDialog();
}
return Status;
}
ich auf dieser Linie einen Fehler haben:
var lastVersion = new DirectoryInfo(NovoUpdate);
//.Where(d => d.Name.StartsWith("UPDATE_"))
.Select(d => new { Directory = d, Token = d.Name.Split('_') })
Ich habe alredy versucht, die „letzteversion“, um Zeichenfolge zu ändern oder verwenden Sie einfach die "NovoUpdate" Zeichenfolge anstelle von DirectoryInfo. Ich weiß nicht wirklich wie Linq verwenden Jede Hilfe wäre aprecciated.
aber .GetDirectories werden alle Verzeichnisse innerhalb "NovoUpdate" aufzählen Verzeichnis. Ich muss nur überprüfen, die Version des aktuellen Verzeichnisses, die Pfad ist auf "NovoUpdate" var –