2

我在将灯光开关应用程序发布到 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 做了一些我正在运行的命令没有做的事情,但我不确定那是什么。

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

4

2 回答 2

3

理论上,你应该可以针对三个灯开关项目的根项目的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>
于 2014-11-11T10:46:34.147 回答
0

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

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

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

于 2014-11-10T14:35:27.683 回答