26

アプリケーションを公開するときに作成される 2 つのマニフェスト ファイルが必要かどうか知りたいです。それらを削除すると機能します。それらが必要な場合に備えて、それらを埋め込もうとしました(プロジェクト>アプリケーション>デフォルト設定でマニフェストを埋め込む)が、それらはまだ外部にあります。

それらは次(appname).exe.manifestのとおり(appname).applicationです。

4

3 に答える 3

16

マニフェスト ファイルには、アプリケーションの実行方法が記述されています。MSDNから:

静的か動的かにかかわらず、すべてのアセンブリには、アセンブリ内の要素が相互にどのように関連しているかを説明するデータのコレクションが含まれています。アセンブリ マニフェストには、このアセンブリ メタデータが含まれています。アセンブリ マニフェストには、アセンブリのバージョン要件とセキュリティ ID を指定するために必要なすべてのメタデータと、アセンブリのスコープを定義し、リソースとクラスへの参照を解決するために必要なすべてのメタデータが含まれています。アセンブリ マニフェストは、Microsoft 中間言語 (MSIL) コードを含む PE ファイル (.exe または .dll)、またはアセンブリ マニフェスト情報のみを含むスタンドアロン PE ファイルに格納できます。

そのため、特に Vista 以降でデフォルトで昇格してアプリケーションを実行したい場合は、それらを削除するのはおそらく間違っています。

アプリケーションにマニフェストを埋め込むために使用される mt ツールの使用に関する MSDN の詳細を次に示します

また、Vista 以降でのマニフェストのキャッシュに関する非常に興味深い問題にも注意してください。

于 2009-11-29T11:32:27.870 に答える
6

また、VS2003 が使用されていて、コントロールを XP インターフェイスのように見せたい場合、マニフェストには、アプリケーションと共に使用される適切なバージョン 6.x の共通コントロールが含まれ、GUI は "古い不格好な Windows 2000 コントロールの代わりに、XP の見栄えが良く更新されました。そのため、マニフェストをリソースとして埋め込むことができるので、マニフェスト ファイルを持ち歩く必要はありません (非常に小さいファイルです) にもかかわらず、アプリケーションの配布がよりきれいになります。

また、.NET 1.1 ランタイム (現在は 2.0+ で修正済み) にはバグがあり、アプリケーションでマニフェストが使用されている場合、GUI を更新して XP のルック アンド フィールを向上させることができませんでした。当時の回避策は、 Application.Run(new form());を実行する前にApplication.DoEventsを呼び出すことでした。

現在、Vista と Win 7 では、マニフェストを使用して昇格されたアクセス許可を指定し、UAC を回避して、Vista/Win 7 で UAC ダイアログ ボックスをポップアップする可能性を最小限に抑えています。

于 2009-11-29T11:41:10.060 に答える
1

目的のために必要です

アセンブリのバージョン要件とセキュリティ ID、およびアセンブリのスコープを定義し、リソースとクラスへの参照を解決するために必要なすべてのメタデータを指定する

于 2009-11-29T11:30:42.017 に答える