ClickOnce - перезапись файлов содержимого
-
06-07-2019 - |
Вопрос
У меня есть решение, которое развертывается с использованием ClickOnce.
Он состоит из приложения, нескольких сборок, на которые есть ссылки и база данных SQL Server Compact.
Существует также сборка, на которую не ссылается основное приложение, но просто загружается во время выполнения. Эта сборка должна быть развернута вместе с приложение, в том же каталоге, что и двоичные файлы приложения.
Я настроил Visual Studio для копирования плагина " сборка в \ bin \ debug (или \ bin \ release) каталог проекта пользовательского интерфейса после компиляции.
Затем я добавил файл в проект пользовательского интерфейса, не как ссылка, а просто как файл. Я установил действие сборки на «Содержимое», это как это показано в диалоговых окнах «Свойства / публикация» проекта пользовательского интерфейса.
Когда я впервые опубликовал приложение, оно работало как шарм. Но потом я обновил сборку плагина, даже дал ему другой номер версии и опубликован снова, только чтобы найти сборку не была обновлена, но первый один из когда-либо загруженных еще использовался. (Даже на чистом компьютере без предварительной установки).
Я немного покопался и обнаружил, что сборка (LibComposites.dll) была скопирована в каталог, в котором приложения clickonce хранят свои двоичные файлы в качестве каталога, в котором хранятся файлы данных.
В обоих случаях первая опубликованная версия.
В общем, у меня есть приложение, которое ссылается на некоторые сборки:
Ссылки Control.exe - > LibLLC.dll, LibDataLayer.dll, LibLLCExtenders.dll
загружает в время выполнения - > LibComposites.dll (который также ссылается на LibLLC.dll)
Мне нужно развернуть новую версию LibComposites.dll в том же каталоге как приложение, которое каждый публикует.
Почему первая в мире опубликованная версия этой сборки все еще используется?
Как заставить файл LibComposites.dll перезаписываться при каждой публикации?
Решение
Хорошо, у меня была такая же проблема. Вот как я это решаю (не может быть идеальным, но это работает.
1) Если ваша dll или файл находится внутри решения, я бы снял его и добавил его заново. 2) Зайдите в свойство вашего проекта и выберите «Опубликовать» и «Файлы приложения». Вам нужно, чтобы ваш файл был там, и выберите ОПЯТЬ " Включить " (а не Авто ...).
Чем вы сможете публиковать с новым. Я не знаю, почему это не работает, если я не делаю этого, но при каждой публикации я должен выполнить эти шаги, чтобы получить последнюю версию ...
Другие советы
Позвольте мне сделать это правильно: вы используете функцию публикации Visual Studio для создания и развертывания пакета ClickOnce?
Удачи с этим.
Возможно, вам лучше создавать собственные пакеты ClickOnce с помощью Mage . р>
Я начал путь по Visual Studio и быстро обнаружил, что это путь к страданию. Узнайте, как использовать Mage, а затем посмотрите на некоторые опции MSBuild для «автоматизации». это.
У меня была такая же проблема. Проблема заключалась в том, что у меня были dll в корневом каталоге приложения, и они были в " в проекте. Р>
Решение простое, просто исключите файлы dll из проекта, и эта проблема исчезнет. Р>