2

仮想マシン Windows 7 32 ビットに ClickOnce アプリケーションをデプロイしていますこのアプリケーションはいくつかのCOMコンポーネントを使用するため、アプリケーションを機能させるために、COM アセンブリとアプリケーションの両方のマニフェストを作成しました。

application1.exe および application1.exe.manifest

comAssembly1.dll および comAssembly1.x.manifest

以下の情報はこちらから。

アプリケーションが動作していることを確認するために、COM アセンブリで regsvr32 を実行しましたが、すべて問題ありません。その後、アセンブリの登録を解除し、すべてが引き続き機能することを望んでいました。残念ながら、そうではありません。

私の最初の寄港地は、マニフェストをチェックすることでした。これらは、上記で参照した記事や、私が読んだ他の記事と一致します。そのため、マニフェストが読み込まれているかどうかを確認したかったのです。Process Monitorを実行していて、"application1.exe.manifest" という名前のファイルへのアクセスのみを表示するフィルターを設定しましたが、何も表示されません。少しグーグルを持っていると、マニフェストがいつロードされるか、またはどのプロセスによってロードされるかを示す場所を見つけることができないようです。

以前にこの問題が発生したことがありますか? もしそうなら、あなたは原因を発見しましたか?または、ClickOnce マニフェストにマニフェスト ファイルを使用するように指示するために必要な魔法のスイッチがありますか?

また、私自身の情報として、アプリケーション マニフェストがアクセスされるのはいつになると思いますか?

4

1 に答える 1

1

別の .manifest ファイルは、実行可能ファイルに埋め込まれたマニフェストが含まれていない場合にのみ Windows で使用されます。問題は、C# 実行可能ファイルには既に実行可能ファイルがあることです。コンパイラによって自動生成される単純なもので、UAC と互換性のあるプログラムを宣言します。

プロジェクト + 新しいアイテムの追加、アプリケーション マニフェスト ファイル アイテム テンプレートを選択します。エディターで開き、それらの UAC エントリが表示されます。reg-free COM マニフェスト エントリをこのエントリに移動し、.manifest ファイルなしでアプリを展開します。

于 2012-12-07T14:43:05.637 に答える