Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как вы можете опубликовать приложение ClickOnce через CruiseControl.NET?
У меня есть CruiseControl.NET версия 1.4, настроенная на моем сервере разработки. Всякий раз, когда разработчик проверяет код, он делает компиляцию.
Теперь мы находимся в том месте, где мы можем начать давать наше приложение тестировщикам. Мы хотели бы использовать ClickOnce для распространения приложения, причем идея заключается в том, что когда тестировщик идет тестировать приложение, у него есть последняя сборка.
Я не могу найти способ сделать так, чтобы это произошло с CruiseControl.NET. Мы используем MSBUILD для выполнения сборок.
Мы уже сделали это и можем дать вам несколько советов для начала.
2 вещи, о которых вы должны знать:
- MSBuild может генерировать необходимые файлы deployment для вас.
- MSBuild не будет развертывать файлы в общий ресурс FTP или UNC. Для этого вам понадобится отдельный шаг.
Чтобы использовать MSBuild для создания манифестов ClickOnce, вот команда, которую вам нужно будет выполнить:
msbuild /target:publish /p:Configuration=Release /p:Platform=AnyCPU; "c:\yourProject.csproj"
Это подскажет MSBuild построить свой проект и создать ClickOnce deployment файлов внутри каталога bin\Release\YourProject.publish .
Осталось только скопировать эти файлы в FTP/UNC share/wherever,, и все готово.
Вы можете сказать CruiseControl.NET, чтобы построить, используя эти параметры MSBuild.
Затем вам понадобится задача сборки CruiseControl.NET, чтобы взять сгенерированные файлы deployment и скопировать их в общий ресурс FTP или UNC. Для этого мы используем обычную маленькую консольную программу C#, но вы можете так же легко использовать сценарий Powershell.
Спасибо за всю вашу помощь. Окончательное решение, которое мы реализовали, брало немного от каждого ответа.
Мы обнаружили, что проще работать с несколькими средами, используя простые пакетные файлы. Я не говорю, что это лучший способ сделать это, но для нашего данного сценария и требований это сработало хорошо. Дополнение "Project" с вашим именем проекта и "Environment" с вашим именем среда (разработки, тестирования, стадии, производства и т. д.).
Вот область задач нашего файла "ccnet.config".
<!-- override settings -->
<exec>
<executable>F:\Source\Project\Environment\CruiseControl\CopySettings.bat</executable>
</exec>
<!-- compile -->
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>F:\Source\Project\Environment\</workingDirectory>
<projectFile>Project.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
<targets>Rebuild</targets>
<timeout>0</timeout>
<logger>ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
<!-- clickonce publish -->
<exec>
<executable>F:\Source\Project\Environment\CruiseControl\Publish.bat</executable>
</exec>
Первое, что вы заметите, это то, что CopySettings.bat работает. При этом копируются определенные параметры среды, например подключения к базе данных.
Затем выполняется стандартная задача MSBUILD. Любые ошибки компиляции перехватываются здесь и обрабатываются как обычно.
Последнее, что нужно выполнить-это Publish.bat. Это фактически выполняет MSBUILD "rebuild" снова из командной строки, и параметры из CruiseControl автоматически передаются и строятся. Далее, MSBUILD вызывается для цели "publish". Точно такие же параметры задаются для публикации, когда была выпущена перестройка. Это позволяет синхронизировать номера сборок. Кроме того, наши исполняемые файлы называются по - разному (например, - ProjectDev и ProjectTest). В итоге мы получаем разные номера версий и имена, и это позволяет ClickOnce делать свое дело.
Последняя часть Publish.bat копирует фактические файлы в их новые дома. Мы не используем publish.htm, так как все наши пользователи находятся в сети, мы просто даем им ярлык для файла манифеста на своем рабочем столе, и они могут нажать и всегда запускать правильный исполняемый файл с номером версии, который выходит в CruiseControl.
Вот это CopySettings.bat
XCOPY "F:\Source\Project\Environment\CruiseControl\Project\app.config" "F:\Source\Project\Environment\Project" /Y /I /R
XCOPY "F:\Source\Project\Environment\CruiseControl\Project\My Project\Settings.Designer.vb" "F:\Source\Project\Environment\Project\My Project" /Y /I /R
XCOPY "F:\Source\Project\Environment\CruiseControl\Project\My Project\Settings.settings" "F:\Source\Project\Environment\Project\My Project" /Y /I /R
И наконец, вот Publish.bat
C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /target:rebuild "F:\Source\Project\Environment\Project\Project.vbproj" /property:ApplicationRevision=%CCNetLabel% /property:AssemblyName="ProjectEnvironment" /property:PublishUrl="\\Server\bin\Project\Environment\\"
C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /target:publish "F:\Source\Project\Environment\Project\Project.vbproj" /property:ApplicationVersion="1.0.0.%CCNetLabel%" /property:AssemblyVersion="1.0.0.%CCNetLabel%" /property:AssemblyName="ProjectEnvironment"
XCOPY "F:\Source\Project\Environment\Project\bin\Debug\app.publish" "F:\Binary\Project\Environment" /Y /I
XCOPY "F:\Source\Project\Environment\Project\bin\Debug\app.publish\Application Files" "F:\Binary\Project\Environment\Application Files" /Y /I /S
Как я уже сказал, Это, вероятно, не так, как предполагали разработчики CruiseControl и MSBUILD, но это действительно работает. Если вам нужно заставить это работать вчера, это может быть решением, которое вы ищете. Удачи вам!
Я помню, что делал это в прошлом году для проекта ClickOnce, над которым я работал. Я помню, что мне потребовалась вечность, чтобы понять это, но вот оно. Я хотел, чтобы мои скрипты создавали другой инсталлятор, который указывал бы на нашу dev env и другой для prod. Не только это, но мне нужно было ввести правильную информацию о версиях, чтобы существующие клиенты могли 'realize' есть новая версия, в которой весь смысл clickOnce. В этом скрипте вы должны заменить свои собственные имена серверов и т.д. Хитрость заключается в том, чтобы сохранить файл publish.htm и project.publish и ввести новый номер версии, основанный на версии, предоставленной вам CC.NET.
Вот как выглядел мой сценарий сборки:
<target name="deployProd">
<exec program="<framework_dir>\msbuild.exe" commandline="<project>/<project>.csproj /property:Configuration=PublishProd /property:ApplicationVersion=${build.label}.*;PublishUrl=\\<prod_location>\binups$\;InstallUrl=\\<prod_location>\binups$\;UpdateUrl=\\<prod_location>\binups$\;BootstrapperComponentsUrl=\\<prod_location>\prereqs$\ /target:publish"/>
<copy todir="<project>\bin\PublishProd\<project>.publish">
<fileset basedir=".">
<include name="publish.htm"/>
</fileset>
<filterchain>
<replacetokens>
<token key="CURRENT_VERSION" value="${build.label}"/>
</replacetokens>
</filterchain>
</copy>
</target>
Надеюсь, это поможет
Вы хотите использовать задачи генерации манифеста ClickOnce в msbuild. Этот процесс немного затянут, поэтому я просто укажу вам на пару ссылок. Вот ссылка на msdn и пример статьи , которая, надеюсь, поможет вам начать работу.