使用IDE进行ClickOnce发布工作正常。
尝试通过MSBuild命令行发布时
%MSBUILD% /target:publish /p:Configuration=Release;PublishDir="REMOTE_FOLDER"
仅限Project.exe
和Setup.exe
份。
尝试%MSBUILD% /target:publish
命令时,所有必需的文件都会复制到build\app.publish
文件夹
如何通过命令行发布IDE使用的相同ClickOnce设置
PS this提出类似但不一样的问题
答案 0 :(得分:3)
如何通过命令行发布IDE使用的相同ClickOnce设置
某些功能由Visual Studio完成,而不是由MSBuild命令行完成。因此,从命令行执行时,单击一次部署的行为会有所不同。
如果要通过命令行发布IDE使用的相同ClickOnce设置,可以使用自定义目标来实现它。编辑您的project(csproj)
文件(右键单击项目节点 - >卸载项目 - >编辑xxx.csproj)并在其中添加以下代码:
<PropertyGroup>
<ProjLocation>D:\Test\Projects\ClickOncePublish\ClickOncePublish</ProjLocation>
<ProjLocationReleaseDir>$(ProjLocation)\bin\Debug</ProjLocationReleaseDir>
<ProjPublishLocation>$(ProjLocationReleaseDir)\app.publish</ProjPublishLocation>
<DeploymentFolder>D:\Test\Publish\</DeploymentFolder>
</PropertyGroup>
<Target Name="Test" DependsOnTargets="Clean">
<MSBuild Projects="$(ProjLocation)\$(ProjectName).csproj"
Properties="$(DefaultBuildProperties)"
Targets="Publish"/>
<ItemGroup>
<SetupFiles Include="$(ProjPublishLocation)\*.*"/>
<UpdateFiles Include="$(ProjPublishLocation)\Application Files\**\*.*"/>
</ItemGroup>
<Copy SourceFiles="@(SetupFiles)" DestinationFolder="$(DeploymentFolder)\" />
<Copy SourceFiles="@(UpdateFiles)" DestinationFolder="$(DeploymentFolder)\Application Files\%(RecursiveDir)"/>
</Target>
<Target Name="Clean">
<Message Text="Clean project" />
<MSBuild Projects="$(ProjLocation)\$(ProjectName).csproj"
Properties="$(DefaultBuildProperties)"
Targets="Clean"/>
</Target>
然后,您可以使用MSBuild命令行构建项目:
msbuild /target:test
执行build命令后,所有预期的文件都通过命令行发布,IDE使用相同的ClickOnce设置。
注意:您应该将ProjLocation
的值更改为项目的路径。