0

エクスプローラーで実行可能ファイルを右クリックし、「プロパティ」を選択した場合。次に、プロパティダイアログで「バージョン」タブを選択します。次に、製品バージョンをクリックします。これは、c# で取得する必要がある値です。「fileversioninfo.productversion」で試してみましたが、エクスプローラー「1.85」に入ると、fileversioninfo は 1,00000,8,00 のような奇妙な値を返します。ドットはコンマになり、最後の桁が取り除かれます。それが重要な場合は、win 7 64 ビットで net 2 を使用します。fileversioninfo は、私が期待するものやエクスプローラーが何をするかを返しません。「fileversioninfo.fileversion」も試しましたが、どういうわけか、fileversioninfo.productversion のようなまったく同じ奇妙な値を返します。エクスプローラ ビューでは、元のファイル プロパティ ダイアログ ウィンドウの fileversion と productversion に明確な違いがあります。fileversioninfo クラスを持つ .Net は、エクスプローラーのように値を表示しません。エクスプローラーの方法でバージョンの値を取得するにはどうすればよいですか?

4

1 に答える 1

1

投稿を読み直して、別のexeまたは自分のexeのファイルバージョンを取得したいですか?

別の exeFileVersionInfoの場合はFileMajorPartFileMinorPart, FileBuildPart, ,FilePrivatePartまたはProductMajorPart, ProductMinorPart,を使用し、必要に応じて値をフォーマットします。ProductBuildPartProductPrivatePart

問題の exe をコンパイルした会社または個人が使用したバージョン フィールドによっては、特定のバージョン フィールドが含まれる場合と含まれない場合があることに注意してください。

FileVersionまたはプロパティを使用すると、64 ビットの long の 4 つの 16 ビットの short がコンポーネントProductVersionである 64 ビットの数値が返されます。major.minor.build.private

ただし、次のように使用すると、これは正しくフォーマットされます.ToString()

FileVersionInfo fvi = FileVersionInfo.GetVersionInfo("C:\\MyFile.txt");
string = fvi.ProductVersion.ToString();

正しくフォーマットされていない場合は、バージョン情報の個々のコンポーネントを使用してください。

別の exe のフォーマット済みバージョンを表示するには、次のようにします。

FileVersionInfo fvi = FileVersionInfo.GetVersionInfo("C:\\MyFile.txt");

int major = fvi.ProductMajorPart;
int minor = fvi.ProductMinorPart;
int build = fvi.ProductBuildPart;
int revsn = fvi.ProductPrivatePart;

string = String.Concat(major.ToString(), ".", minor.ToString(), ".", build.ToString(), ".", revsn.ToString());

あるいは単に:

FileVersionInfo fvi = FileVersionInfo.GetVersionInfo("C:\\MyFile.txt");

string = String.Concat(fvi.ProductMajorPart.ToString(), ".", fvi.ProductMinorPart.ToString(), ".", fvi.ProductBuildPart.ToString(), ".", fvi.ProductPrivatePart.ToString());

実行中のexeのこの情報を取得するには、次を使用します。

version = Assembly.GetExecutingAssembly().GetName().Version;

以下を使用して、Mmbr 形式の文字列として表示します。

string = Assembly.GetExecutingAssembly().GetName().Version.ToString();

コンポーネントパーツとして取得できるフルバージョンの major.minor.build.revision は次のとおりです。

major = Assembly.GetExecutingAssembly().GetName().Version.Major;
minor = Assembly.GetExecutingAssembly().GetName().Version.Minor;
build = Assembly.GetExecutingAssembly().GetName().Version.Build;
revision = Assembly.GetExecutingAssembly().GetName().Version.Revision;
于 2013-07-16T23:38:48.880 に答える