問題タブ [side-by-side]
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.
.net - ネイティブ アプリケーションから .NET アセンブリ サイド バイ サイドにアクセスしようとすると、OLE エラー 80131522 が発生する
.NET アセンブリにアクセスする必要があるアプリケーション(Delphi ネイティブ コード)があります(いくつかの COM クラスを公開します。アセンブリとマニフェストを並べて使用してこれを実行したいと考えています。テスト用の .NET アセンブリでこれを実行しましたが、アクセスする必要があるアセンブリに問題があります。
アセンブリが登録されると、COM クラスをインスタンス化できます。アセンブリの登録を解除し、並べてアクセスしようとするとすぐに、上記のエラーが発生します。私のネイティブ アプリケーションにはアプリケーション マニフェストがあり、アセンブリへの単純な依存関係があります。
.net アセンブリにリソースとして埋め込んだアセンブリ マニフェストは次のとおりです。
マニフェストは正しく設定されているようです。アプリケーション マニフェストの依存関係の名前、バージョン、または公開キー トークンを変更すると (例にあるものは私のコードにあるものではありません)、アプリケーションの構成が正しくないという通常の SxS エラーが発生します。
私はこれを別の (確かに単純な) .NET アセンブリで動作させていますが、何が問題なのかわかりません。問題は、エラーの意味がわからないことです。
.net - side-by-side 実行と MS Unit Test
ここでの環境は C#/.Net 4 です。
私の MS Unit Test 単体テスト プロジェクトでは、日付変換計算に COM dll を使用するコードをテストしています (これは、他の COM DLL を使用するため、3 つの COM DLL すべてが関与します)。
通常のアプリケーション/サービスのセットアップで実行する場合、COM dll のアセンブリ ID にリンクするマニフェストを使用してサイド バイ サイドの実行を問題なく実行できますが、単体テストから同じことを実行しようとするとプロジェクトでは、「クラスが登録されていません」例外が原因で常に失敗します。
今、私はすでにこれを試しました:
- テスト DLL マニフェストの埋め込み
- テスト DLL マニフェスト、COM DLL マニフェスト + COM DLL 自体の両方を埋め込む
しかし、役に立たない。だから私は疑問に思っています.マニフェストを介したCOMリンクをユニットテスト環境に認識させるにはどうすればよいですか? 私には、DLLマニフェストのリンクがうまく機能していないように見えますが(EXEマニフェストは正常に機能しています)、通常、そのような考えは何か間違ったことをしているのと同じです...
私は通常、このようなものを検索するのにかなり成功していますが、これについてはヒットがほとんどなく、これに似たものは何もないので、何か考えや意見があれば共有してください:)が必要です、教えてください。
(COM dll の使用は、適切な場所に依存関係を挿入することでおそらく回避できることはわかっていますが、今のところ、サイド バイ サイド セットアップの単体テストに関するこのケースを検討したいと思います)。
敬具
ジェスパー
c++ - エラー:「サイドバイサイド構成が正しくないため、アプリケーションを開始できませんでした」
WindowsXPで正常に動作するVisualStudio2008を使用してMFCアプリケーションを作成しました。しかし、Windows Vistaで同じEXEファイルを実行しようとすると、次のようになります。
エラー:サイドバイサイド構成が正しくないため、アプリケーションを開始できませんでした
イベントビューアを確認すると、次のように表示されます。
c++ - サイド バイ サイドの狂気 - 同じコンピューターでバイナリを実行する
これが私の構成です:
- コンピュータ A - Windows 7、MS Visual Studio 2005、Win7 互換用のパッチ (8.0.50727.867)
- コンピュータ B - Windows XP SP2、MS Visual Studio 2005 がインストールされている (8.0.50727.42)
私のプロジェクトには、いくつかの外部依存関係 (事前にビルドされた DLL - Aでビルドするか、インターネットからダウンロードしたもの)、ソースからビルドされた 2 つの DLL、および 1 つの実行可能ファイルがあります。私は主にAで開発していますが、すべて問題ありません。ある時点で、コンピューターBでプロジェクトをビルドしようとし、ビルド済みの DLL を出力フォルダーにコピーします。すべてが正常にビルドされますが、アプリケーションを起動しようとすると、
アプリケーションを正しく初期化できませんでした (0xc0150002)....
イベント ログには、次の 2 つが含まれます。
依存アセンブリ Microsoft.VC80.CRT が見つかりませんでした。最後のエラーは、参照されたアセンブリがシステムにインストールされていませんでした。
加えて、もう少し面白い
some.dll のアクティベーション コンテキストの生成に失敗しました。参照エラー メッセージ: 操作は正常に完了しました。
この時点で、私は自分の Google-Fu を試していますが、無駄です。ほとんどすべてのヒットは、Visual Studio がインストールされていないマシンでバイナリを実行することに関するものです。ただし、私の場合、実行可能ファイルは、ビルドされたコンピューターで実行できません。
次のステップは依存関係ウォーカーを試すことでしたが、それは私をさらに困惑させました-同じボックスのソースから構築された私のDLLは見つけることができませんがMSVCR80.DLL
、MSVCP80.DLL
実行可能ファイルはこれら2つのDLLに関しては問題ないようです. MSVC?80.DLL
s が見つかることを示していますが、DLL の 1 つを開くと、見つからないと表示されます。それは私が何をすべきか完全に考えていないところですので、親愛なるスタックオーバーフローにお願いします:)
横並びの全体については少しぼやけていることを認めますので、このトピックに関する一般的な読み物も高く評価されます.
.net - IIS6.0 でマネージ .Net COM+ サービスを並行して実行する
ServicedComponent
Windows Server 2003 上の IIS 6.0 の Web アプリケーションから継承し、これをサイド バイ サイド アセンブリとして使用しようとしているマネージ .Net COM+ コンポーネントがあります。
を使用してアセンブリ マニフェストを生成し、mt.exe
これをテスト コンソール アプリケーションのサイド バイ サイド モードで正常に実行しました。ただし、IIS に関しては機能していないように見え、マニフェストを読み取るのではなく、レジストリから COM+ アプリケーションを見つけようとします。
マニフェストは
mt.exe -managedassemblyname:myassembly.dll -out:myassembly.manifest
、それを使用して生成され、Web アプリケーションの仮想ディレクトリにコピーされます。を使用filemon
すると、マニフェストが読み取られることさえないことが明らかになります!
.manifest
ファイルをディレクトリに移動するbin
と、読み取られたように見えますが、同じ問題が発生します。
この作業に成功した人からの助けをいただければ幸いです。
c# - .Net'任意のフレームワーク'構成
フレームワーク3.0および3.5でもうまく機能するプログラムをC#.NET2.0で作成しました。
ただし、.NET Framework 4.0がインストールされている唯一のフレームワークである場合、それは機能しません。ユーザーは2.0をインストールする必要があります。
私はグーグルで次の構成を見つけました:
これをapp.configに追加すると、私のプログラムは.NETFramework4.0で問題なく動作します。
私が探しているのは、.NET'Any Framework'構成であり、インストールされている場合は.NET 2.0で、そうでない場合は.NET4.0でプログラムを実行します。
これを行う方法?
windows - 1つのDLLでのプライベートサイドバイサイドアセンブリ-通常のDLLと同じですか?
MicrosoftWindowsのサイドバイサイドアセンブリと分離アプリケーションソリューションを見ています。
ドキュメントによると:
プライベートアセンブリは、アプリケーションとともに展開され、そのアプリケーション専用に使用できるアセンブリです。
と
プライベートアセンブリは、システム上の他のバージョンのアセンブリと並行して動作するように設計する必要があります。
ただし、プライベートアセンブリの展開プロセスは、アセンブリをアプリケーションのフォルダー(またはアセンブリの名前を持つサブフォルダー)にコピーするだけです。したがって、アプリケーションは複数のバージョンのプライベートアセンブリを使用できません。別のバージョンのプライベートアセンブリを配置すると、古いバージョンが上書きされるためです。
誰かが私にこれを説明できますか?
これが実際にそうである場合、リダイレクトを使用する通常のDLLに対するそのようなアセンブリの利点は何ですか?それらは私にはほとんど同じように見え、マニフェストはここでは使用されていないようです。
c# - 同じアセンブリのバージョンが異なるため、Visual c#プロジェクトを実行できません
私のc#アプリケーションは、2つの異なるパッケージ済みパーサーを使用しており、それぞれが異なる強力なバージョンのAntlr.Runtime.dllを使用しています。
アプリケーションはFileLoadExceptionをスローします。これは、バージョンの1つだけが正しくロードされ、他のバージョンが見つからなかったためと思われます。
<app> \ bin \ x86 \ Debugディレクトリには、dllのコピーが1つだけ含まれています。
コードがバージョン管理されたアセンブリを直接呼び出さないため、アセンブリエイリアスを使用できないことに注意してください。これらは、パーサーアセンブリを介して間接的にのみ呼び出されます。
これは、同じ名前の異なるバージョンのdllを別々のディレクトリに配置するようにVisual Studioに指示することですか?GACの使用はできるだけ避けたいと思います。
私は多くの「並べて」および関連する記事を読みましたが、この質問に対処しているものはないようです。
visual-studio-2010 - Dependency Walker エラー: "ABC.DLL" の Side-by-Side 構成情報にエラーが含まれています
サード パーティの DLL "ABC.DLL" を使用する Visual Studio 2010 で作成したプログラムを実行しています。Windows 7 64 ビットを使用しています。
ただし、1 つの DLL が原因で実行に失敗します。この DLL で Dependency walker を実行すると、次のエラーが発生します。
エラー: "...\ABC.DLL" の Side-by-Side 構成情報にエラーが含まれています。サイド バイ サイド構成が正しくないため、アプリケーションを開始できませんでした。詳細については、アプリケーション イベント ログを参照するか、コマンド ライン sxstrace.exe ツールを使用してください (14001)。
依存関係 MSCVR80.DLL および MSVCP80.DLL がありません。
この次のトピックの解決策をすべて試しましたが、それでも同じエラーが発生します。
ABC.DLL は、Visual Studio 2005 でビルドされたサード パーティのライブラリであり、再ビルドする方法がありません。
Visual Studio C++ 2005 Redistributable をインストールし、別のコンピューターから取得した DLL をコピーしようとしましたが (私のコンピューターには存在しないため)、何も機能しません。
.net - .NET 3.5 以下のアプリケーションは、同じマシンに .NET 4 をインストールすることで何らかのリスクを負うことになりますか?
.NET がサイド バイ サイド実行をサポートしていることは理解していますが、あるマシンには 2.0 があり、別のマシンには 2.0 sp1 があり、別のマシンには .NET 3.5 があるケースを見てきました。これらのバージョンでは、私が使用していた Microsoft 製の DLL にメソッドが追加されていました。System.Net.Mail だったと思います。
私は 2.0 SP1 で利用可能なメソッドを使用していたので、これは悪いことでした。プレーン 2.0 には存在しませんでした。アプリで例外が発生し、マネージャーから、なぜそのユースケースをテストしなかったのかと尋ねられました。 このシナリオに適合するメソッドのリストがどこにあるか知っている人はいますか?
結論 : この経験から、.NET のサイド バイ サイドの主張を 100% 信頼することはできません。
.NET 4.0 をインストールすると、何らかの方法で構成ファイルやバイナリが変更されるか、または下位のフレームワーク バージョンの実行に影響が及ぶかどうか、誰か教えてもらえますか?