私はレガシーVB6コードを維持する責任があり、プロジェクトのCOMDLLのロックに関して厄介な問題に遭遇しました。(これをMyProjectおよびMyProject.dllと呼びます)
MyProjectをVB6IDEにロードすると、結果のバイナリ互換DLLMyProject.dllをコンパイルできます。次に、DLL(またはその他の問題)にフックする(クラシックASP)Webアプリケーションを実行できます。
そのため、COM DLLを再コンパイルしようとすると、「permissiondenied」エラーが発生します。次に、DLLのロックを解除するには、次の手順を実行する必要があります。
- 他のVB6IDEで開いている依存プロジェクトがないことを確認してください
- IISをリサイクルする
- ファイルが読み取り専用ではないことを確認します(ソース管理にチェックインした場合は、読み取り専用になることがあります)
- プロジェクトを閉じて、再度開きます。
多くの場合、これは問題を修正し、再コンパイルできるようにする最後のステップです。これは、VB6IDEが実際にロードされたプロジェクトのDLLをロックしていることを意味します。
私の同僚は、VB6プロジェクトがDLLのバイナリ互換性で動作する方法に関係していると説明しましたが、解決策を提案することはできませんでした。
他の場所での私の検索では、答えはほとんど得られませんでした。これに関連する検索クエリは、多くの無関係な回答を返す傾向があります(おそらく私は検索エンジンに間違ったことを尋ねています)。
Stackoverflowで見つけた最も近いものは、数年前のこの質問でしたが、実際には法案に適合していません。
誰かがこれを改善するかもしれない他の提案がありますか?