私のアプリケーションにはexeがあり、いくつかのDLLが使用されています。私はC#ですべてを書いています。C#Compact Frameworkでexeアプリケーションの名前とバージョンを取得する方法
私は、exeファイルのバージョン情報からアプリケーション名とバージョンを取得する方法を書いておきたいと思います。
私は完全な.NETではGetEntryAssemblyを使用することができますが、CFでは使用できないことを理解しています。
私のアプリケーションにはexeがあり、いくつかのDLLが使用されています。私はC#ですべてを書いています。C#Compact Frameworkでexeアプリケーションの名前とバージョンを取得する方法
私は、exeファイルのバージョン情報からアプリケーション名とバージョンを取得する方法を書いておきたいと思います。
私は完全な.NETではGetEntryAssemblyを使用することができますが、CFでは使用できないことを理解しています。
アプリ名を取得するようなのWin32 APIを試すことができます。これが役立つことを願っていますGetCallingAssembly()
を使用するか、DLLがEXEバージョンを取得しようとしていて、すぐにアクセスできない場合は、タイプ別にアセンブリを取得してください(例:typeof(Program).Assembly
)。
EDIT
あなたはDLLを持っていて、実行ファイルの名前が必要な場合は、ユースケースに応じて、いくつかのオプションがあります。アセンブリはEXEアセンブリに含まれる型から取得できますが、DLLがEXEを参照することはまれであるため、その型のオブジェクトにEXEパスが必要です。
Version GetAssemblyVersionFromObjectType(object o)
{
o.GetType().Assembly.GetName().Version;
}
またの少しを行うことができ、エンド実行し、次のように:
[DllImport("coredll.dll", SetLastError = true)]
private static extern int GetModuleFileName(IntPtr hModule, StringBuilder lpFilename, int nSize);
...
var name = new StringBuilder(1024);
GetModuleFileName(IntPtr.Zero, name, 1024);
var version = Assembly.LoadFrom(name.ToString()).GetName().Version;
FileInfo
クラスFileVersionInfo
をお試しいただけますか?
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
はあなたが必要になることがあります。バージョンを取得
System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
:
あなたはまたGetModuleFile()
あなたはコンポーネント(.dllファイル)を作成し、メインをフェッチするために、別のアプリの参照に使用したい場合
メインアプリ名の取得:バージョンを取得
AppDomain.CurrentDomain.DomainManager.EntryAssembly.GetName().Name;
をアプリ名とバージョンは、あなたがこの方法を使用することができます。ホスト上とIF依存していること、この、
AppDomain.CurrentDomain.DomainManager.EntryAssembly.FullName;
しかし、この解決策で問題がある:フルネーム(:アプリ名、アプリのバージョン、文化、なPublicKeyTokenが含まれている)の取得
AppDomain.CurrentDomain.DomainManager.EntryAssembly.GetName().Version.ToString();
実行ファイルから直接実行されると、エラーが発生します。 したがって、次の選挙:
メインアプリ名を取得:
string appName = AppDomain.CurrentDomain.FriendlyName;
appName = appName.Substring(0, appName.IndexOf('.'));
バージョン行き方:
System.Windows.Forms.Application.ProductVersion;
System.Reflection.Assembly.GetEntryAssembly().GetName().Version;
この機能は他のライブラリからのアプリケーションのバージョンを提供します読み込まれます。
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
これは、現在のライブラリのバージョンを提供します。アプリケーションライブラリでこれを呼び出すと、アプリケーションのバージョンが取得され、これをDLLで呼び出すと、そのDLLのバージョンが取得されます。
私の意見ではSystem.Reflection.Assembly.GetEntryAssembly().GetName().Version;
は使用する機能がありません。
'System.Diagnostics.Process.GetCurrentProcess()。MainModule.ModuleName'を試しましたか?それはあなたの質問に遭遇したときに** **私が探していたものでした。 – Bitterblue
@ mini-me覚えておくのは古すぎる – cja