0

私は VS2008 でいくつかの C# プラグイン ライブラリを開発しており、他の誰かのアプリケーションと共にデプロイされています。彼らは展開に ClickOnce を使用しており、私は少し非標準的なことをしようとしていると思います。

アプリと DLL がインストールされているマシンの 1 つで、一部の DLL を手動で置き換えて修正をテストしたいと考えています。

アプリは c:\Documents and Settings\testsystem\Local Settings\Apps\2.0\blahblahblah...long nasty path\ にあります

私のDLLはそのパスの下のサブディレクトリにあります。

私のテスターは私の DLL を取得してそのサブディレクトリに配置しましたが、彼が送信したトレース出力から、古いバージョンの DLL が実際に実行されているように見えます。テスターに​​ DLL がサブディレクトリにあることを確認してもらい、トレース ログに正しいパスが表示され、アプリがその場所から実行されていることが示されますが、トレース出力は私が彼に送信した DLL からのものではありません。

この時点で、ClickOnce の展開はすべてエルフの魔法です。新しい DLL が上書きされているようには見えませんが、期待どおりのバージョンが実行されていないことは確かです。誰にもアイデアはありますか?

ありがとう、マット

4

4 に答える 4

2

正しいディレクトリがありますか?クリックワンスディレクトリ構造は少し複雑で、DLLは複数回複製される可能性があります。必ずしも期待した場所からDLLをプルするわけではありません。また、誰かが一度DLLをそこに置いた場合、GACからDLLをプルしている可能性があります。

procexpを実行してみて、アプリを探し、保持しているハンドルを調べてください。これにより、問題のDLLへの正しいパスがわかります。

于 2009-02-10T22:06:27.157 に答える
0

奇妙な回避策の帽子をかぶると、次のことができます。

  • アプリを別の名前で公開し、テスターに​​そのバージョンをインストールしてもらいます。

変更する必要があるのはアプリの名前空間ですが、ClickOnce アプリケーション名も更新してください。そうしないと、混乱の天国になります。

また

  • より低いバージョン番号でアプリを公開する

これが機能するかどうかは 100% 確信が持てないと言わざるを得ませんが、それより低い数値で公開すると、他のクライアントは更新を取得できず、テスターはアンインストールしてからインストールして古いバージョンを取得する必要があります。ただし、テスターがテスト バージョンをインストールした後で実際のバージョンに戻すと、テスターはアプリを起動するたびに更新プログラムのインストールにノーと言わなければならないことに注意してください。

私は間違いなく別の名前で公開するつもりです。そうすれば、すべてのテスト用のバージョンが得られます。

于 2009-10-27T06:14:33.983 に答える
0

この場合、トレース DLL を使用して clickonce アプリの更新を公開することは問題外でしょうか? これは、clickonce でマジックを実行する最も簡単な方法です。

于 2009-02-10T20:34:09.297 に答える