問題タブ [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# - NUnit を使用した単体テスト中に目的の / 正しいアセンブリ パスを取得する
モジュールの単体テストのために moq の実験を始めたところです。
実際、単体テストを書かなければならないクラスは
Assembly.GetExecutingAssembly().Location
内部的にパスを決定します。
ただし、実行中のアセンブリのパスが異なるため、単体テストの作成中は機能しません (単体テスト アセンブリのパスが使用されます)。
AppData\\Local\\Temp\\3ylnx32t.ukg\\TestApplication.Test\\assembly\\dl3\\aeb938e6\\f3664631_d982ce01
.
シャドウコピーを無効にしてみました。
それでも、うまくいきません!
任意の提案をいただければ幸いです。前もって感謝します。
c# - Nunit シャドウ コピー dbghelp.dll の問題
私の C# および MC++ アプリケーションが dbghelp.dll の定義されたバージョン (デバッグ ツールから) を確実に使用するようにするために、すべてのアセンブリが存在するアプリケーション ディレクトリにそれを配置しました。これは、古いバージョンまたは新しいバージョンのマシンでも問題なく機能します。
dbghelp.dll からいくつかの機能を呼び出す NUnit テストがあります。シャドウ コピーを有効にすると、NUnit は、アセンブリ フォルダーにあるものではなく、システム ディレクトリの dbghelp.dll を使用します。Windows フォルダに古いバージョンの dbghelp.dll があるシステムでは、一部の機能が利用できない可能性があるため、これはテストに失敗します。
シャドウ コピーがなくても、同じシステムで動作し、アセンブリ ディレクトリの dbghelp.dll が使用されます。NUnit の開発者はシャドウ コピーを無効にすることを推奨していません (また、構成できない場合もあります)。
dll - アンインストール中にアセンブリの場所からキャッシュを削除する
そのための Office アドインと Windows インストーラー アプリケーションを作成しました。この記事によると、addins dll'a はこのようなディレクトリにコピーされC:\Users\Robin\AppData\Local\assembly\dl3\VBJZ5WH8.6NJ\HRZA3JXN.LVG\b0520efe\3a5b99ef_2e21cb01\GoldMail Outlook Add-In.DLL
ます。アンインストール プロセス中にコピーしたファイルを削除したいと考えています。C:\Users\Robin\AppData\Local\assembly\dl3\
私のインストーラーアプリケーションで(実際にはアンインストールで)コピーされたファイルへのフルパスを取得する方法を教えてください。レジストリまたはその他の場所に保存されていますか? ファイルが複数回コピーされていることに気付きました。よろしくお願いします。
c# - AppDomain.ShadowCopyFiles が文字列なのはなぜですか?
.Net には、アセンブリをコピーしてファイルのロックを保持するための ShadowCopy 機能があります。次の 2 つのプロパティがあります。
AppDomain.ShadowCopyFiles
AppDomainSetup を使用するAppDomainSetup.ShadowCopyFiles
それを内部に保存しますstring[]
AppDomainSetup
string Value[]
構成を保存するために使用されるフィールドがあります。私にとって奇妙なことはAppDomainSetup.ShadowCopyFiles
、それが文字列プロパティであり、実際の型の代わりに"true"
orを設定する必要があることです。"false"
bool
のそのプロパティの実装は次のAppDomainSetup
とおりです。
AppDomain.ShadowCopyFiles の実装は次のとおりです。
しかし、なぜAppDomainSetup
このプロパティにはstring
? bool
Microsoft が のような変換ロジックを使用しなかったのはなぜAppDomain.ShadowCopyFiles
ですか?
このような少し臭いコードが にあるのは奇妙でAppDomainSetup
、私が行方不明になっている本当の理由があるのではないかと考えていました。
c# - 実行時に exe を上書きする AppDomain を使用したシャドウ コピー
次のサンプル アプリでは、新しい を作成しAppDomain
、シャドウ コピーを有効にして実行します。新しいものからAppDomain
、元のメイン exe を削除 (置換) しようとします。しかし、「アクセスが拒否されました」というエラーが表示されます。興味深いことに、プログラムを起動した後、Windows エクスプローラーからメインの exe の名前を変更できます (削除はできません)。
シャドウ コピーは、メイン exe の実行時上書きに対して機能しますか?