通过命令行发布lightswitch应用程序不起作用

时间:2014-11-10 10:15:26

标签: visual-studio-2013 msbuild visual-studio-lightswitch msdeploy lightswitch-2013

我在使用lightwitch应用程序发布到visual studio之外的软件包时遇到了一些问题。

我想我可能使用了错误的命令,但我无法找到有关我应该使用哪些命令的任何信息。

我的命令如下: MSBuild "Path To My Sln.sln" /p:VisualStudioVersion=12.0;DeployOnBuild=true;PublishProfile=Release;Configuration=Release

我收到以下错误:

    C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web
    .Publishing.targets(3899,5): msdeploy error ERROR_EXCEPTION_WHILE_CREATING_OBJECT: 
    Web deployment task failed. (Object of type 'manifest' and path 
    'manifestpath\projectname.xml' cannot be created.  Learn more at:
    http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_EXCEPTION_WHILE_CREATING_OBJECT.)

原因是清单文件中的app.publish文件夹不存在。该文件夹应位于bin中。

当我通过VS发布app.publish文件夹时,我的当前想法是VS做了我正在运行的命令没有的东西,我不知道那是什么。

需要通过命令行工作的原因是我们可以在构建服务器上创建一个包。

2 个答案:

答案 0 :(得分:3)

理论上,您应该能够定位三个lightswitch项目的Publish根项目的.lsxtproj目标。这将触发所有依赖项的构建,然后将Server和HtmlClient项目输出推送到Publish\所在的.lsxtproj文件夹中的包。

DeployOnBuild属性由标准Web项目目标文件公开,以触发创建包,但似乎这并不适用于LightSwitch项目,我认为这是有意义的Voodoo tm 正在构建它。所以你需要删除它。

如果您要创建另一个项目文件作为构建脚本,那么,您可以执行以下操作:

<?xml version="1.0" encoding="utf-8"?>
<Project MSBuildVersion="4.0" ToolsVersion="12.0" DefaultTargets="LSPublish" 
  xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="LSPublish">
        <MSBuild Projects="[path_to_yourproj].lsxtproj" Targets="Publish" />
    </Target>
</Project>

答案 1 :(得分:0)

首先,您应该在Visual Studio中手动发布LightSwitch应用程序。这将在LightSwitch应用程序项目文件中设置适当的属性。

LightSwitch项目没有发布配置文件,因此很遗憾,您无法在场景中使用这些配置文件。如果要从命令行动态设置它们,则需要使用MSBuild中的/ p开关覆盖LightSwitch项目中定义的任何属性。

下一步是你应该在LightSwitch项目文件而不是解决方案上调用msbuild。你需要调用“发布”目标。所以这最终看起来像这样(项目文件扩展名将根据您使用的LightSwitch版本而有所不同): msbuild MyLightSwitchApp.lsproj / t:发布/ p: