ClickOnce - перезапись файлов содержимого - PullRequest
0 голосов
/ 04 ноября 2008

У меня есть решение, которое развертывается с использованием ClickOnce.

Он состоит из приложения, нескольких сборок, на которые есть ссылки и база данных SQL Server Compact.

Существует также сборка, на которую не ссылается основное приложение, но просто загружается во время выполнения. Эта сборка должна быть развернута вместе с приложение, в том же каталоге, что и двоичные файлы приложения.

Я настроил Visual Studio для копирования сборки "plugin" в \ bin \ debug (или \ bin \ release) каталог проекта пользовательского интерфейса после компиляции.

Затем я добавил файл в проект пользовательского интерфейса, не как ссылка, а просто как файл. Я установил действие сборки "Контент", это как это отображается в диалоговых окнах «Свойства / Публикация» проекта пользовательского интерфейса.

Когда я впервые опубликовал приложение, оно работало как шарм. Но потом я обновил сборку плагина, даже дал ему другой номер версии и опубликован снова, только чтобы найти сборку не была обновлена, но первый один из когда-либо загруженных еще использовался. (Даже на чистом компьютере без предварительной установки).

Я немного покопался и обнаружил, что сборка (LibComposites.dll) была скопирована в каталог, в котором приложения clickonce хранят свои двоичные файлы в качестве каталога, в котором хранятся файлы данных.

В обоих случаях первая опубликованная версия.

В общих чертах, у меня есть приложение, которое ссылается на некоторые сборки:

Ссылки Control.exe -> LibLLC.dll, LibDataLayer.dll, LibLLCExtenders.dll
загружает в время выполнения -> LibComposites.dll (который также ссылается на LibLLC.dll)

Мне нужно развернуть новую версию LibComposites.dll в том же каталоге как приложение, которое каждый публикует.

Почему до сих пор используется первая опубликованная версия этой сборки

Как заставить файл LibComposites.dll перезаписываться при каждой публикации?

Ответы [ 3 ]

4 голосов
/ 04 ноября 2008

Хорошо, у меня была такая же проблема. Вот как я это решаю (не может быть идеальным, но это работает.

1) Если ваша dll или файл находится внутри решения, я бы снял его и добавил его заново. 2) Зайдите в свойство вашего проекта и выберите «Опубликовать и файлы приложений». Вам нужно, чтобы ваш файл был там и снова выбрать «Включить» (а не «Авто» ...).

Чем вы сможете публиковать с новым. Я не знаю, почему это не работает, если я не делаю этого, но при каждой публикации я должен выполнить эти шаги, чтобы получить последнюю версию ...

0 голосов
/ 11 августа 2015

У меня была такая же проблема. Проблема заключалась в том, что у меня были DLL в корневом каталоге приложения, и они были "в" в проекте.

Решение простое, просто исключите файлы dll из проекта, и эта проблема исчезнет.

0 голосов
/ 04 ноября 2008

Позвольте мне сделать это правильно: вы используете функцию публикации Visual Studio для создания и развертывания пакета ClickOnce?

Удачи с этим.

Возможно, вам лучше создавать свои собственные пакеты ClickOnce, используя Mage .

Я пошел по маршруту Visual Studio и быстро обнаружил, что это путь к страданию. Узнайте, как использовать Mage, а затем посмотрите на некоторые опции MSBuild для «автоматизации» этого.

...