Мы копируем нашу производственную сборку в отдельной папке, используя события после сборки, и заменяем файл app.config
нашим продуктом app.config. Однако Clickonce читает файлы в папке bin \ Release.Изменение исходной папки Clickonce
Я также попытался скопировать все файлы из нашего пользовательского места сборки в папку bin\Release
в событии post-build, но app.config по-прежнему переопределен (думаю, clickonce перестраивает проект в bin \ Release).
Можно ли сообщить Clickonce для чтения из нашей пользовательской папки? Или, если это не правильный путь, как вы справляетесь с такой ситуацией?
Edit: Дополнительная информация сценарий событий
после сборки:
del /s /q /f "$(SolutionDir)Build\Client"
rmdir /s /q "$(SolutionDir)Build\Client"
if $(ConfigurationName) == Debug goto :debug
if $(ConfigurationName) == Release goto :release
:release
xcopy "$(TargetDir)*.dll" "$(SolutionDir)Build\Client\Prod\" /Y /I /R
xcopy "$(TargetDir)*MyApp.UI.Win.exe" "$(SolutionDir)Build\Client\Prod\" /Y /I /R
copy "$(TargetDir)Configs\App.Production.config" "$(SolutionDir)Build\Client\Prod\$(TargetFileName).config" /Y
REM for clickonce
copy "$(TargetDir)Configs\App.Production.config" "$(TargetDir)$(TargetFileName).config" /Y
copy "$(TargetDir)Configs\App.Production.config" "$(TargetDir)PostBuildEventWasHere.config" /Y
del /s /q /f "$(TargetDir)\*.pdb"
goto :exit
:debug
xcopy "$(TargetDir)*.dll" "$(SolutionDir)Build\Client\Dev\" /Y /I /R
xcopy "$(TargetDir)*MyApp.UI.Win.exe" "$(SolutionDir)Build\Client\Dev\" /Y /I /R
copy "$(TargetDir)Configs\App.Development.config" "$(SolutionDir)Build\Client\Dev\$(TargetFileName).config" /Y
goto :exit
:exit
И мой опубликовывать выход:
------ Build started: Project: MyApp.UI.Win, Configuration: Release Any CPU ------
(...builds all projects)
Compile complete -- 0 errors, 4 warnings
(...echoing the build event script here, and successful copy/delete messages)
Building MyApp.UI.Win...
(It must be rebuilding here!)
------ Publish started: Project: MyApp.UI.Win, Configuration: Release Any CPU ------
Connecting to '\\MyPublishLocation'...
Publishing files...
Publish success.
\\MyPublishLocation\publish.htm
========== Build: 8 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========
Благодарим за подробный ответ. У нас есть файл app.config, добавленный в проект, и 3 других файла конфигурации в папке «Configs». В событии после сборки (в режиме выпуска) производственный файл app.config из этой папки копируется в верхнюю папку так же, как вы описали. Однако, когда я нажимаю правой кнопкой мыши на проекте и публикую его, производственный файл app.config переопределяется app.config в верхней папке. Я предполагаю, что это потому, что clickonce делает дополнительную сборку после выполнения моих событий после сборки. Файлы Pdb все еще существуют, хотя я удаляю их в событии после сборки. – henginy
Примечание: Когда я создаю проект без публикации, все в порядке. Приложение app.config правильно заменяется моим продуктом app.config. После публикации он переопределяется. – henginy
Это странно, и я попрошу команду ClickOnce об этом. По моему опыту, он создает, а затем создает развертывание. Для нас это отлично работало, но, возможно, для файлов app.config это совсем другое. – RobinDotNet