Как я получаю версию блока, не загружая его?

Из sed one-liners :

# delete the last 10 lines of a file
sed -e :a -e '$d;N;2,10ba' -e 'P;D'   # method 1
sed -n -e :a -e '1,10!{P;N;D;};N;ba'  # method 2

Кажется, это то, что вы любите.

24
задан starblue 9 May 2009 в 12:56
поделиться

3 ответа

Я нашел следующий в этой статье .

using System.Reflection;
using System.IO;

...

// Get current and updated assemblies
AssemblyName currentAssemblyName = AssemblyName.GetAssemblyName(currentAssemblyPath);
AssemblyName updatedAssemblyName = AssemblyName.GetAssemblyName(updatedAssemblyPath);

// Compare both versions
if (updatedAssemblyName.Version.CompareTo(currentAssemblyName.Version) <= 0)
{
    // There's nothing to update
    return;
}

// Update older version
File.Copy(updatedAssemblyPath, currentAssemblyPath, true);
36
ответ дан Joel B Fant 28 November 2019 в 22:49
поделиться

В зависимости от файлов одна опция могла бы быть FileVersionInfo - т.е.

FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(path)
string ver = fvi.FileVersion;

, проблема состоит в том, что это зависит от кода, имеющего эти [AssemblyFileVersion] атрибут и она соответствующий эти [AssemblyVersion] атрибут.

я думаю, что посмотрел бы на опции AssemblyName, предложенные другими сначала, все же.

12
ответ дан Marc Gravell 28 November 2019 в 22:49
поделиться

Используйте AssemblyName.GetAssemblyName("assembly.dll");, затем проанализируйте имя. Согласно MSDN:

Это будет только работать, если файл будет содержать манифест сборки. Этот метод заставляет файл быть открытым и закрытым, но блок не добавляется к этому домену.

9
ответ дан jop 28 November 2019 в 22:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: