【问题标题】:MSBUILD script building solution, but not deploying publishing profileMSBUILD 脚本构建解决方案,但未部署发布配置文件
【发布时间】:2014-06-19 10:19:34
【问题描述】:

我已经为我的网页创建了一个发布配置文件,并且我可以使用 Visual Studio 中的 Web 部署界面成功发布(右键单击项目、部署等)。它在我的本地 PC 上构建项目,并将文件复制到目标 IIS 服务器。

但现在我正在尝试创建一个 MSBuild 命令,它应该执行相同的操作,但它只是构建解决方案,而不是将其复制到服务器。

我的 MSbuild 命令 看起来像这样,我从解决方案源目录运行它

msbuild "test.co.za.sln" p:DeployOnBuild=true /p:PublishProfile="test.co.za"  /p:UserName="domain\test"  /p:Password="test"

我的构建命令有什么问题吗?正如您在屏幕截图中看到的,它正在成功构建,但没有复制任何文件。这让我想知道发布配置文件是否已执行。 我已经尝试了发布配置文件路径、完整路径和扩展名的各种组合,但似乎没有任何东西可以复制我的文件。

我的发布配置文件如下所示App_Data\Publishprofile\test.co.za.pubxml

<?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <WebPublishMethod>MSDeploy</WebPublishMethod>
        <LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
        <SiteUrlToLaunchAfterPublish>http://test.co.za</SiteUrlToLaunchAfterPublish>
        <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
        <MSDeployServiceURL>test.co.za</MSDeployServiceURL>
        <DeployIisAppPath>test.co.za</DeployIisAppPath>
        <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
        <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
        <UserName>domain\test</UserName>
        <_SavePWD>True</_SavePWD>
      </PropertyGroup>
    </Project>

编辑:这是我添加到解决方案中的现有经典 ASP 网站,它不包含“.csproj”文件,只是一个“website.publishproj”,似乎没有执行

【问题讨论】:

    标签: asp.net msbuild msdeploy


    【解决方案1】:

    您似乎没有传入VisualStudioVersion 属性。你应该包括那个。根据您使用的 Visual Studio 版本,该值将是 11.012.014.0。您也应该传入一个 Configuration 的值,但这不是必需的。我已经在 http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx 写过为什么这很重要。

    您可以在 http://www.asp.net/mvc/tutorials/deployment/visual-studio-web-deployment/command-line-deployment 找到有关 asp.net 命令行发布的文档

    【讨论】:

    • 感谢@Sayed 的回复!我是你博客的忠实粉丝!我尝试了 VisualStudioVersion 和 Configuration,但没有成功。我忘了提一下,这是我添加到我的解决方案中的现有 ASP 经典网站,它不包含“.csproj”文件。所以一个不同的问题:我可以从一个 msbuild 命令脚本部署一个网站,该网站未绑定到项目文件吗? (我只有一个 website.publishproj) 我创建了一个演示 C# 项目,并且可以使用脚本成功发布。但不是将其添加为“现有网站”
    • 我想我的问题可能和这个stackoverflow.com/questions/14395487/… 一样。不确定这是否是正确的解决方案
    【解决方案2】:

    当我运行 msbuild 命令时,我的“website.publishingproj”似乎从未被构建。不知道为什么,@Sayed 你可能知道吗?

    我必须在我的解决方案旁边创建一个名为“after.solutionName.sln.targets”的目标文件,并复制此答案中的代码:https://stackoverflow.com/a/15138373/1184603

    <!--?xml version="1.0" encoding="utf-8"?-->
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <Target Name="Deploy Website" AfterTargets="Build">
            <Message Text="Starting Website deployment" Importance="high">
            </Message>
            <MSBuild Projects="$(MSBuildProjectDirectory)\MyWebs\website.publishproj" 
            BuildInParallel="true" /> 
        </Target>
    </Project>
    

    它现在可以从我的 msbuild 脚本正确发布。

    【讨论】:

    • 解决方案构建不知道 website.publishproj。你的方法在我看来不错。
    猜你喜欢
    • 2012-12-16
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 2019-01-02
    • 1970-01-01
    • 2013-07-04
    • 2015-08-10
    相关资源
    最近更新 更多