2010-05-25 2 views
0

Мы копируем нашу производственную сборку в отдельной папке, используя события после сборки, и заменяем файл 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 ========== 

ответ

1

Мы имели гр ase, где у нас были разные лицензии для одной из наших dll для отладки и конфигурации релиза. Мы обработали его, добавив обе лицензии в проект и вставив команду после сборки, чтобы скопировать правильную лицензию на выход. Это привело к тому, что наше развертывание ClickOnce просто собрало файл, который был там. Вы можете попробовать это с вашим файлом app.config и посмотреть, работает ли он. Вот как мы это сделали:

  1. Добавить один из App.config файлов в ваш проект, не имеет значения, один (потому что это собирается быть заменен после сборки копии). Это гарантирует, что оно появляется в файлах приложений и развертывается.

  2. Добавить папку для каждой конфигурации, которую вы хотите использовать. Для нас мы назвали эти папки license_debug и license_release. Мы помещаем лицензии в соответствующие папки. Мы закончили развертывание обеих папок, чтобы файлы были там для команды post-build.

  3. Добавить команду после сборки, которая в основном копирует файл из папки в верхний каталог. Поэтому, если бы мы сделали сборку отладки, она скопировала бы отладочную лицензию. Если бы мы сделали сборку релизов, она скопировала бы лицензию на выпуск.

Вот наша команда после сборки:

COPY/Y "$ (TargetDir) лицензия _ $ (ConfigurationName) *" "$ (TargetDir)"

Я не знаю, если это будет работать с файлами app.config, но я не знаю, почему это не так.

+0

Благодарим за подробный ответ. У нас есть файл app.config, добавленный в проект, и 3 других файла конфигурации в папке «Configs». В событии после сборки (в режиме выпуска) производственный файл app.config из этой папки копируется в верхнюю папку так же, как вы описали. Однако, когда я нажимаю правой кнопкой мыши на проекте и публикую его, производственный файл app.config переопределяется app.config в верхней папке. Я предполагаю, что это потому, что clickonce делает дополнительную сборку после выполнения моих событий после сборки. Файлы Pdb все еще существуют, хотя я удаляю их в событии после сборки. – henginy

+0

Примечание: Когда я создаю проект без публикации, все в порядке. Приложение app.config правильно заменяется моим продуктом app.config. После публикации он переопределяется. – henginy

+0

Это странно, и я попрошу команду ClickOnce об этом. По моему опыту, он создает, а затем создает развертывание. Для нас это отлично работало, но, возможно, для файлов app.config это совсем другое. – RobinDotNet

Смежные вопросы