問題タブ [shadow-copy]
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.
c# - AppDomainシャドウコピー参照されるアセンブリを含める
初めてシャドウコピーを試しています。私は次のコードを持っています:
実行可能ファイルは一時ディレクトリに問題なく到達しており、参照されているdllに到達するまで実行されています。プロジェクト全体で参照した14〜16個のdllがこの一時ディレクトリにコピーされていないため、アプリが爆発します。
私は何が欠けていますか?それらすべてを一時ディレクトリにもコピーするにはどうすればよいですか?
c# - AppDomainExecuteAssemblyファイルまたはアセンブリを読み込めませんでした
次のような別のアプリ(app2)をロードするアプリ(app1)があります。
その行を実行すると、次のエラーが発生します。
ファイルまたはアセンブリを読み込めませんでした。
App2にはFooへの参照があります。app1でFooへの参照を追加すると、機能します。問題は、app1がFooを参照したくないということです。App1の主な目的は、ネットワーク共有でapp2の新しいバージョンを検出し、app2をアンロードし、新しいバイナリをコピーしてから、上記の行を使用してapp2を再起動することです。その後、app1に古いFooが含まれている場合、app2は自身の実行ディレクトリでFooの代わりにそれを使用します。
app2のみがFooを参照し、app1がそのエラーなしでapp2をロードするようにするにはどうすればよいですか?
注:シャドウコピーを使用していますが、app1にFooへの参照がある場合に機能します。
windows - Windows VSS: 2 つのシャドウ コピーの違いは?
VSS API を使用してボリュームのシャドウ コピーを作成し、UNC パスを使用してそれらにアクセスしています。
2 つの連続する影の間で変更されたもののリストを取得することは可能ですか?
これを行う明白な方法は、ボリューム内のすべてのファイルを調べて変更を確認することですが、VSS の重要な機能の 1 つは、情報のデルタを保存し、何を保存するかだけを保存することであるため、これを行うより簡単な方法が必要です。変更されます。
c# - C#: AppDomain ShadowCopyDirectories が空です
私はappdomainの概念が初めてです。ここでは、シャドウ コピーは参照しているアセンブリのコピーを作成すると述べていますが、ShadowCopyDirectories を確認すると空です。
これが私のコードです:
私は何かを逃しましたか?ありがとうございました
.net - デフォルトの AppDomain のシャドウ コピーを設定する正しい方法は何ですか
既定のAppDomainに特定のアセンブリのシャドウ コピーを使用させることはできますか? では、特定のディレクトリの既定の AppDomain 内でシャドウ コピーを有効にする実用的なソリューションについて説明しています。
基本的に、これらの単純な方法を使用するように指示されています。
しかし、ここで使用されているメソッドは古いものとしてマークされているため、同じことを達成する正しい方法は何なのか疑問に思っていました. 警告メッセージは、次のことを示唆しています。
代わりに AppDomainSetup.ShadowCopyDirectories の使用を調査してください
AppDomain には、このタイプのメンバーが呼び出されSetupInformation
、この簡単な実装にたどり着く可能性があります。
残念ながら、これは効果がありません。問題は、現在の appdomain の AppDomainSetup を変更してシャドウ コピーを有効にする方法はありますか?
c# - 実行時に上書きできるように、MEF と ShadowCopying DLL
実行時にアセンブリを上書きできるように、アプリケーションが MEF プラグイン ディレクトリで DLL をロックするのを止めようとしています (実際には、MEF にオンザフライでアセンブリをリロードさせようとしているわけではないことに注意してください。次のアプリの起動時に問題ありません。コピーを行うためにアプリを停止する必要はありません)
以下のように、ロードされた mef アセンブリ用にシャドウ コピーされたアプリ ドメインを作成することで、これを実行しようとしています。
次に、このクラスの CompositionContainer を介して MEF コンポーネント カタログにアクセスします。ただし、コンポジション コンテナーはシャドウコピー ドメイン内でのみ初期化されるようです (これは理にかなっています)。これは、アプリケーション ドメインでは null であることを意味します。これを行うためのより良い方法があるかどうか、またはクロスドメインクエリを使用して MEF コンポーネントを取得する方法があるかどうか疑問に思っていました
c - シャドウコピー内からハイブファイルへのRegLoadKey
シャドウコピーを作成していますが、を使用してそのシャドウコピーからレジストリハイブをマウントしたいRegLoadKey()
ので、通常のレジストリ関数を使用してその内容を確認します。
これは通常、まったく機能しない特定のマシンを除いて、うまく機能します。
シャドウコピーを作成し、そのマウントポイントを取得し
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8
ます 。
この呼び出しは1009 - The configuration registry database is corrupt.
私が使用する場合、私はCreateFileW()
そのパスを使用してこのファイルを正常に開くことができるので、それは間違いなくそこにあります。
シャドウコピーがレジストリライターで作成されていることを確認したので、それが問題になるとは思いません。
シャドウコピーを作成し、再起動後にこれを試してみても違いはありません。
これは一部のマシンでのみ発生します。ほとんどの場合、問題なく動作します。動作しないマシンの違いが何であるかわかりません。
マシンはWindows200864ビットです。
c# - c#シャドウコピーの例
リンクされたdllも使用して実行可能ファイルを更新する必要があります。
私はについて読んだことがAppDomainSetup.ShadowCopyFiles
ありますが、必要なことを行うための正しい手順を試すのに苦労しています
質問は次のとおりです。
- 更新を通知するとき、または実行可能ファイルを起動するたびにのみ作成する必要があるシャドウコピー?
- dllと.exeをコピーして更新する正しい手順は何ですか?
deployment - app_offline.htm がコピーされてアクティブになった後 (シャドウ コピーがオフ)、Web サイトをデプロイすると bin/*.dll がロックされる
Web サイトの展開で問題が発生しています。シャドウ コピーは、以前の展開の問題とサイトの展開後にオフになります。
具体的には、展開時にapp_offline.htm
、サイト/アプリケーションがオフラインであることをコピーして確認した後でも、ファイルbin/*.dll
がロックされていることがよくあります。
appdomain
シャドウ コピーをオフにしても、DLLがアンロードされたときに DLL のロックが解放されることを期待しapp_offline.htm
ます。
のコンテンツを削除しようとする直前に変更 ( への ) が取得されるのを防ぐことを目的とした一時的なweb.config
見つかったを展開しようとしました 新しい をコピーした後、
一時停止することさえあります。Stack Overflow
bin/
bin/
10s
web.config
アプリケーション プール (プロセス) が dll のロックの所有者であることをハンドル ユーティリティで確認したw3wp.exe
ので、これがファイルを削除/上書きできない理由であると想定しています。アプリプールを手動でリサイクルすると、解放され、問題なく展開できます。残念ながら、展開プロセスの一部として、app_offline をコピーして web.config を変更することは可能ですが、IIS
appcmd のリサイクルを実行することは (アクセス許可/グループ ポリシーの理由から) できないため、Web だけでこのロックを解放できる必要がありapp_offline.htm
ます。構成。
シャドウ コピーをオンに戻すと、この特定の問題は「解決」されますが、DLL でロックがまだ保持されている場合。しかし、問題を先延ばししているだけなのだろうかと心配しています。古いdllのロックがappdomain
再度ロードされたときに解放されない限り?
プロセスIDをコピーしapp_offline.htm
てもw3wp
、ハードリサイクルのように変更されませんが、ロックされているappdomain
ものを解放する必要があるものをアンロードしていると思います。bin/ files
もう 1 つの興味深い点は、これは実稼働サーバーでのみ発生するように見えることです。ローカルまたは開発/ステージング サイトで再現することはできません。app_pools
またはconfigとの構成の違いはないと思いますが、IIS
これが原因でこの動作が発生する可能性があります。
また、明確にするためshadowCopyBinAssemblies
に、この問題が発生することなく(同じ展開プロセスで)3年以上falseに設定されているため、最近起こった何かがこれを引き起こしたように感じますが、何が原因かわかりません.
これを解決する方法、または何が原因であるかについてのアイデアをありがとう。
(サーバーはIIS7
またはだと思います7.5
)