問題タブ [manifest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - 同じ署名を持つ Web サイトのアセンブリ参照エラー
IIS 6 と Windows Server 2003 で複数の ASP.NET 2.0 Web サイトを持っています。各サイトはいくつかの DLL (デザイン、ロジックなど) を参照しています。各サイトは、リサイクル手法に関する既定の構成を持つ異なる ApplicationPool にあります。
すべての DLL には厳密な名前 (遅延なし) が付けられ、変更されないバージョン (2.0.0.0) があり、すべての DLL は GAC に配置されます。
Webサイト「A」で使用するために何か(メソッド、クラスなど)が変更されたGAC(つまりMyLibrary.dll)のDLLを更新した後、「A」アプリケーションプールのみをリサイクルした後、同じ DLL を参照する Web サイト "B" にアクセスしようとすると、その DLL に関する一般的なエラーが発生します。
見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULT からの例外: 0x80131040)
もちろん、コード、同じ強力なキー、同じバージョン、カルチャではなく、DLL では何も変更されていません。もちろん、「B」アプリケーションプールをリサイクルすると、エラーは消えます。
奇妙でランダムな(言わざるを得ない!) 動作を生成するものは何ですか? ハッシュのように、アセンブリを比較するために使用されるものは他にありますか?
補遺
- Perpetualcoderは、DLL がどのように参照されるかを私に尋ねました。完全修飾名がある場合は、web.config の次の行だと思います。
assembly="MyNamespace.MyComponent, Version=2.0.0.0, Culture=neutral, PublicKeyToken=1234567890ASDFGH"
windows - アプリケーションのマニフェストで指定された詳細はどのように使用されますか?
マニフェストを追加して、XP/Vista スタイルのコモン コントロールを使用するようにアンマネージ C++ アプリケーションをアップグレードしています。アプリケーション マニフェストに関する MSDN のページによると、マニフェストで名前とバージョンを指定する必要があり、オプションで説明を指定する必要があります。
これらの詳細はどのように使用されますか? アセンブリのメジャー バージョンとマイナー バージョンが同じであることによって、下位互換性が暗示されるという言及がありますが、これはアプリケーションには当てはまらないようです。また、Windows XP のアプリケーションのプロパティで、マニフェストによって指定された名前、バージョン、または説明を確認できませんでした。
これらを変更すると、どのような影響がありますか? バージョンを最新に保つ価値はありますか?
manifest - マニフェストファイルについて
最近、非常に奇妙な問題に遭遇しました。この問題は、Windows XP SP3 および Vista でのみ発生します。私の手順は次のとおりです。
- デスクトップに 2 つの新しいフォルダーを作成します (フォルダー名は A と B とします)。
- Microsoft GraphEdit (
graphedt.exe
) アプリケーションを A フォルダーにコピーし、同様に空のgraphedt.exe.manifest
ファイルを作成します。を実行すると、マニフェストが間違っているため実行できないgraphedt.exe
というエラー メッセージが表示されます。graphedt.exe
- Microsoft GraphEdit (
graphedt.exe
) アプリケーションを B フォルダーにコピーし、実行graphedt.exe
して閉じ、空のgraphedt.exe.manifest
ファイルを作成し、graphedt.exe
再度実行すると、マニフェスト ファイルが に適用できないことがわかりますgraphedt.exe
。ただし、 の最終更新時刻を変更するgraphed.exe
と、マニフェストは再び機能します。
EXEがマニフェストファイルを初めて使用するときにWindowsがステータスを記憶しているようですが、EXEのサイズまたは最終更新日を変更すると、Windowsは以前の記憶されたステータスをリセットします。
c++ - アプリケーションのマニフェスト ファイルを読み取りますか?
アプリケーションに既に埋め込まれているマニフェスト ファイルを読み取る簡単な方法はありますか?
私は別のデータ ストリームの線に沿って考えていた?
com - 登録不要の COM のマニフェスト ファイルを生成する
グローバル COM 登録を必要とせずに完全に分離して展開できるように、マニフェスト ファイルを使用するいくつかのアプリケーション (ネイティブ、.NET) があります。たとえば、dbgrid32.ocx com サーバーへの依存関係は、myapp.exe と同じフォルダーにある myapp.exe.manifest ファイルで次のように宣言されます。
dbgrid32.ocx は、独自の dbgrid32.ocx.manifest ファイルと共に同じフォルダーに展開されます。
これはすべて正常に機能しますが、これらのマニフェスト ファイルを手動で維持するのは少し面倒です。これらのファイルを自動的に生成する方法はありますか? 理想的には、COM サーバー (ネイティブと .NET の両方) のリストに対するアプリケーションの依存関係を宣言し、残りを自動的に生成したいと考えています。出来ますか?
com - 登録不要の COM を HTA アプリケーションで使用することはできますか?
HTA アプリケーションは MSHTA.exe 内でホストされているため、マニフェストを提供するにはどうすればよいでしょうか? さらに、MSHTA.exe.manifest を提供すると、他の HTA アプリが壊れる可能性があると思いますか?
visual-c++ - Visual C++ 2008 Express でコンパイルされた DLL を使用した Win2k での RunDll32 問題
まず、私は C++ プログラマーではありません (ただし、学習中です)。最終的に、Visual C++ 2008 Express Edition を使用して、いくつかの C++ ソース コードを変更してコンパイルすることができました。Visual C++ 2003 のフル バージョンで同じコードをコンパイルしようとしましたが、成功しませんでした (さまざまなエラーが発生しましたが、うまくいきませんでした)。
問題は、Windows Vista で RunDll32 を使用して DLL を呼び出すとすべてが正常に機能することですが、Windows 2000 で同じ rundll32 呼び出しを試みると、次のエラーが発生します。
「mysampledll.dll のロード中にエラーが発生しました」「指定されたモジュールが見つかりませんでした。」
もちろん、フルパスの設定、ファイルの移動などを試みましたが、うまくいきませんでした。ファイルが存在し、適切な権限があることを保証します。
おそらく、Vista で DLL と共にコンパイルされるマニフェストに何か問題があるのではないかと考えました。そのため、リソース エディターを使用して削除しましたが、Vista と Win2k で同じエラーが発生します。マニフェストは次のとおりです。
ここで、Microsoft.VC90.CRT がインストールされていない Win2k に問題があると思いますが、DLL にこの依存関係があるのはなぜですか? プロジェクトのプロパティで「共通言語ランタイムのサポート」を「共通言語ランタイムのサポートなし」に設定しましたが、それでも CLR が必要なのはなぜですか? Win2k で既定で利用できる古い Visual C++ ランタイムを使用するようにマニフェストを変更する方法はありますか? これらの問題についての私の無知をお詫び申し上げます。
.net - ビルド時に.NET依存関係チェーンの上位にx86を要求する方法
マネージDLLであるp4.netを使用するプロジェクトがいくつかあります。p4.netは、32ビットのアンマネージDLLであるp4dn.dllに依存しています。これはx64システムで問題があるため、p4.netを使用する各プロジェクトに移動し、そのプロセッサタイプをx86に設定する必要がありました。
問題を正しく理解していれば、.NETがexeをロードすると、マニフェストをチェックし、マニフェストがない場合は、プロセッサタイプに最適な処理を実行します。次に、32ビットdllに遭遇すると、barfsします。
p4.netを使用する各プロジェクトに移動し、32ビットとしてマークすることができます。しかし、これらはかなりの数あります。また、人々は新しいものを作り続け、32ビットを設定するのを忘れるでしょう。そして将来、誰かがx64でそれを使おうとすると、この問題が再び発生します。
私の質問はこれです:.NETにp4dn.dllを32ビットとして使用するアプリを自動的にロードさせる方法はありますか?それができない場合、IDEがこれを検出してビルドに失敗する方法はありますか?
または、p4apiまたはp4dn.dllの横に配置できる.manifestファイルを作成して、それらを使用するアプリが32ビットで自動実行されるようにすることは可能ですか?
.net - マニフェストを使用して UAC の権限を昇格すると、新しいコンソール ウィンドウが開きます
私はコンソールツールを書いています。UAC サポート (マニフェスト ファイル) のために権限を昇格させずに、コマンド プロンプト ( cmd.exe ) またはコンソール ファイル マネージャー ( far.exeなど) からこのツールを呼び出すと、同じウィンドウでツールが開き、その出力が同じウィンドウに書き込まれます。
しかし、マニフェスト ファイルが追加されると、UAC 要求ダイアログの後にツール用の新しいコンソール ウィンドウが作成されるため、ツールの出力がそこに書き込まれ、ウィンドウが閉じます。そのようなツールをコンソールにする目的はありません。
それを修正する方法は?どのような回避策がありますか?