Есть 2 проблемы с командной строкой Щелкните один раз развертывание: (1) Параметр автоматического увеличения на странице свойств публикации проекта не учитывается в командной строке, и (2) темавопрос, начиная загрузку по FTP на удаленный сайт.
Решение (с командной строкой Visual Studio 2017 для разработчиков v15.7.3)
- Загрузите задачи сборки сообщества MS отсюда: https://github.com/loresoft/msbuildtasks
- Выгрузите проект, откройте его с помощью notepad ++ или выбранного редактора и импортируйте задачи сборки сообщества ms.Следуйте инструкциям на их странице github.
- Добавьте файл ProjectName.version.txt всего одной строкой с информацией о версии вашего проекта.Например:
1.2.78.1341
Цифры соответствуют {Major}.{Minor}.{Build}.{ApplicationRevision}
Добавьте следующую цель в конец проекта, которая использует задачи сообщества Version и FileUpdate:
<Target Name="beforePublishCmd">
<Message Text="revision before: 3.0.0.$(ApplicationRevision)"/>
<Version VersionFile="ProjectName.version.txt" BuildType="Automatic" Major="3" Minor="0" Build="0" RevisionType="Increment">
<Output TaskParameter="Major" PropertyName="Major" />
<Output TaskParameter="Minor" PropertyName="Minor" />
<Output TaskParameter="Build" PropertyName="Build" />
<Output TaskParameter="Revision" PropertyName="ApplicationRevision" />
</Version>
<Message Text="revision after: 3.0.0.$(ApplicationRevision)"/>
<FileUpdate Files="ProjectName.vbproj"
Regex="<ApplicationRevision>(\d+)"
ReplacementText="<ApplicationRevision>$(ApplicationRevision)" />
</Target>
Вызовите указанную выше цель из командной строки ПЕРЕД вызовом цели публикации, например:
msbuild /target:beforePublishCmd -property:Configuration=Release /p:PlatformTarget=x86 "%USERPROFILE%\VSProjects\ProjectName.vbproj"
Добавьте цель "afterPublish", которая используетзадача сообщества FtpUploadDirectoryContent .Эта цель автоматически вызывается после завершения цели публикации.
<Target Name="afterPublish">
<PropertyGroup>
<CurrentDate>$([System.DateTime]::Now.ToString(yyyy MMM dd HH:mm:ss))</CurrentDate>
</PropertyGroup>
<FtpUploadDirectoryContent
ServerHost="projectname.org"
Username="*****"
Password="*****"
LocalDirectory=".\bin\Release\app.publish"
RemoteDirectory="/"
Recursive="true"
/>
<Exec Command="C:\Progra~1\TortoiseSVN\bin\svn commit ..\ --non-interactive --message "Release 3.0.0.$(Revision) on $(CurrentDate): $(commitMessage)""/>
</Target>
Наконец, вызовите цель публикации из командной строки:
msbuild / target: publish -property: Configuration = Release / p: PlatformTarget = x86 "% USERPROFILE%\ VSProjects \ ProjectName.vbproj "