У меня есть Приложение Windows в csproj в моем решении, и я хочу, генерируют, Публикуют командную строку использования (летучая мышь, cmd).
Мой сценарий (я поместил \r\n
для лучшего чтения):
SET MSBUILD="%SystemRoot%\Microsoft.NET\Framework\v3.5\MSBuild.exe"
SET CARWIN="..\..\Security.CarWin.csproj"
rem msbuild para publish
%MSBUILD% /target:rebuild;publish %CARWIN%
/p:ApplicationVersion="1.0.0.0"
/p:Configuration=release
/p:PublishUrl="C:\ClickOnce\CarWin.WebInstall\Publicacion\"
/p:InstallUrl="http://desserver/carwinclickonce/Publicacion/"
/p:PublishDir="C:\ClickOnce\CarWin.WebInstall\Publicacion\"
примечание: Я попробую слишком использующий /target:publish
Но в пути PublishDir или PublishUrl (C:\ClickOnce\CarWin.WebInstall\Publicacion) не генерируют любые файлы.
Я видел много сообщений в этом сайте и Google, но мне не найденный любым решением.
Взгляните этот вопрос переполнения стека . В основном свойство Publishurl
игнорируется при запуске ClickOnce из командной строки. Но вы можете легко добавить поведение с дополнительной MSBUILD-задачей.
Я создал дополнительный MSBUILD-файл, например build.csproj
. Это содержит публикацию публикацию
. Эта задача сначала вызывает регулярное MS-Build целевого проекта. После этого он копирует результат в публикацию-каталог. Теперь я вызываю «build.csproj» вместо файла проекта REGUAR из командной строки:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Publish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- project name-->
<ProjectName>MyExampleProject</ProjectName>
<!--properties for the project-build-->
<DefaultBuildProperties>Configuration=Release</DefaultBuildProperties>
<!-- location of the click-once stuff, relative to the project -->
<ProjectPublishLocation>.\bin\Release\app.publish</ProjectPublishLocation>
<!-- Location you want to copy the click-once-deployment. Here an windows-share-->
<ProjectClickOnceFolder>\\TargetServer\deployments</ProjectClickOnceFolder>
</PropertyGroup>
<Target Name="Publish" DependsOnTargets="Clean">
<Message Text="Publish-Build started for build no $(ApplicationRevision)" />
<!-- run the original build of the project -->
<MSBuild Projects="./$(ProjectName).csproj"
Properties="$(DefaultBuildProperties)"
Targets="Publish"/>
<!-- define the files required for click-once-->
<ItemGroup>
<SetupFiles Include="$(ProjectPublishLocation)\*.*"/>
<UpdateFiles Include="$(ProjectPublishLocation)\Application Files\**\*.*"/>
</ItemGroup>
<!-- and copy them -->
<Copy
SourceFiles="@(SetupFiles)"
DestinationFolder="$(ProjectClickOnceFolder)\"/>
<Copy
SourceFiles="@(UpdateFiles)"
DestinationFolder="$(ProjectClickOnceFolder)\Application Files\%(RecursiveDir)"/>
</Target>
<Target Name="Clean">
<Message Text="Clean project" />
<MSBuild Projects="./$(ProjectName).csproj"
Properties="$(DefaultBuildProperties)"
Targets="Clean"/>
</Target>
</Project>
Я не знаю, если это проблема, но я заметил, что вы передаете / целевой параметр дважды ?
Вы могли бы вы использовать разделительный пример полуколона:
/target:rebuild;publish
документация MSDN в параметрах командной строки и MSBUILD
, если это также не работает, вы, возможно, могут попытаться отладить его, передавая
/verbosity:diag