ClickOnce-コンテンツファイルの上書き
-
06-07-2019 - |
質問
ClickOnceを使用して展開されるソリューションがあります。
アプリケーション、複数の参照アセンブリで構成されます およびSQL Server Compactデータベース。
メインアプリケーションによって参照されないアセンブリもありますが、 ただし、実行時にロードされるだけです。このアセンブリは、次と共に展開する必要があります アプリケーション、アプリケーションバイナリと同じディレクトリ。
"プラグイン"をコピーするようにVisual Studioを設定しました\ bin \ debug(または\ bin \ release)へのアセンブリ コンパイル後のUIプロジェクトのディレクトリ。
次に、ファイルをUIプロジェクトに追加し、 参照としてではなく、単にファイルとして。ビルドアクションを" Content"に設定します。これは UIプロジェクトの[プロパティ] / [公開]ダイアログに表示される方法。
アプリケーションを最初に公開したとき、それは魅力のように機能しました。 しかし、その後、プラグインアセンブリを更新し、別のバージョン番号を付けました アセンブリが更新されていなかったが、最初の アップロードされたものはまだ使用されていました。 (事前にインストールされていないクリーンなコンピューターでも)。
掘り下げてみると、アセンブリ(LibComposites.dll)がコピーされていることがわかりました clickonceアプリケーションがバイナリを保存する両方のディレクトリ データファイルを保存するディレクトリとして。
どちらの場合も、最初に公開されたバージョン。
概要では、いくつかのアセンブリを参照するアプリケーションがあります:
Control.exeの参照-> LibLLC.dll、LibDataLayer.dll、 LibLLCExtenders.dll
でロード ランタイム-> LibComposites.dll(これは LibLLC.dllも参照しています)
LibComposites.dllの新しいバージョンを同じディレクトリに展開する必要があります それぞれ公開するアプリケーションとして。
なぜそのアセンブリの最初の公開バージョンがまだ使用されているのか
どのようにしてLibComposites.dllをすべてのパブリッシュによって強制的に上書きできますか?
解決
さて、私は同じ問題を抱えていました。解決方法は次のとおりです(理想的ではないかもしれませんが、機能します。
1)dllまたはファイルがソリューション内にある場合、私はそれを取り外して再度追加します。 2)プロジェクトのプロパティ内に移動し、「公開およびアプリケーションファイル」を選択します。そこにファイルを用意し、AGAIN" Include"を選択する必要があります。 (自動ではありません...)。
新しいもので公開できるようになります。私がそれをしないとなぜ機能しないのか分かりませんが、各パブリッシュ、私はこれらの手順を実行して最後のバージョンを取得する必要があります...
他のヒント
これを正しくさせてください:Visual Studioの発行機能を使用してClickOnceパッケージを作成および展開しますか?
それで頑張ってください。
Mageを使用して独自のClickOnceパッケージを構築。
私はVisual Studioのルートを開始しましたが、すぐにそれが悲惨さへの道であることを発見しました。 Mageの使用方法を学び、「自動化」のためのMSBuildオプションのいくつかを見てください。これ。
同じ問題がありました。問題は、アプリケーションのルートディレクトリにDLLがあり、それらが「イン」であったことです。プロジェクトで。
ソリューションは簡単です。dllファイルをプロジェクトから除外するだけで、この問題はなくなります。