我正在尝试创建一个批处理文件来发布我们在一次单击中拥有的几个ClickOnce应用程序。我正在使用msbuild作为示例,下面的命令行显示了我是如何做到的:
msbuild
MyApp.sln
/t:Publish
/p:Configuration=Release
/p:PublishUrl="C:\Apps\"
/v:normal > Log.txt
(为便于阅读而包装)
当我运行上面的命令时,它会在发布目录中构建和发布应用程序,即bin\ release!在我上面的例子中,您知道msbuild为什么不尊重PublishUrl属性吗?
PS:我也尝试了不同的组合,包括删除‘配置’,使用‘重建’和'PublishOnly‘为目标,并删除引号,但没有任何成功。
发布于 2009-12-17 10:54:41
有些特性是由Visual完成的,而不是由MSBuild-脚本完成的。因此,单击一次部署在从命令行执行时的行为有所不同。
我创建了一个特殊的MSBuild文件来完成这个任务。它运行发布目标,然后将文件复制到正确的位置。
根据alhambraeidos的请求,提供了构建文件的示例。它基本上运行常规的VisualStudio-构建,然后将单击一次的数据复制到真正的发布文件夹中。注意,它移除了一些特定于项目的东西,所以它可能坏了。此外,它并没有增加版本号。这是由我们的持续构建服务器完成的:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Publish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- the folder of the project to build -->
<ProjLocation>..\YourProjectFolder</ProjLocation>
<ProjLocationReleaseDir>$(ProjLocation)\bin\Release</ProjLocationReleaseDir>
<ProjPublishLocation>$(ProjLocationReleaseDir)\app.publish</ProjPublishLocation>
<!-- This is the web-folder, which provides the artefacts for click-once. After this
build the project is actually deployed on the server -->
<DeploymentFolder>D:\server\releases\</DeploymentFolder>
</PropertyGroup>
<Target Name="Publish" DependsOnTargets="Clean">
<Message Text="Publish-Build started for build no $(ApplicationRevision)" />
<MSBuild Projects="$(ProjLocation)/YourProject.csproj" Properties="Configuration=Release" Targets="Publish"/>
<ItemGroup>
<SchoolPlannerSetupFiles Include="$(ProjPublishLocation)\*.*"/>
<SchoolPlannerUpdateFiles Include="$(ProjPublishLocation)\Application Files\**\*.*"/>
</ItemGroup>
<Copy
SourceFiles="@(SchoolPlannerSetupFiles)"
DestinationFolder="$(DeploymentFolder)\"
/>
<Copy
SourceFiles="@(SchoolPlannerUpdateFiles)"
DestinationFolder="$(DeploymentFolder)\Application Files\%(RecursiveDir)"
/>
<CallTarget Targets="RestoreLog"/>
</Target>
<Target Name="Clean">
<Message Text="Clean project:" />
<MSBuild Projects="$(ProjLocation)/YourProject.csproj" Properties="Configuration=Release" Targets="Clean"/>
</Target>
</Project>
发布于 2010-02-01 00:44:11
您设置了错误的属性。试一试PublishDir。
您可以按原样将它传递到msBuild中,或者可以在项目文件中设置它(或者也可以将sln文件设置为sln文件,不确定我总是使用项目文件)。像这样
<PropertyGroup>
<PublishDir>C:\Dev\Release\$(BuildEnvironment)\</PublishDir>
</PropertyGroup>
我刚刚写了几篇关于MsBuild和ClickOnce的博客文章,看看你会发现它们是有用的.
祝你好运:-)
发布于 2016-02-10 19:58:17
我要投入我的2分钱,这个语法似乎有效(对或错):
/p:publishUrl="C:\\_\\Projects\\Samples\\artifacts\\Web\\"
https://stackoverflow.com/questions/1919625
复制相似问题