使用VS代码发布Web部署

时间:2015-05-01 20:17:44

标签: msbuild webdeploy visual-studio-code

在Visual Studio中,我使用“发布Web”功能执行一些web.config转换,并将WebAPI项目发布到我们的服务器。使用Web Deploy完成发布。

现在我正在使用Visual Studio Code,我已经失去了那个工具。但是,我想继续使用Web Deploy发布项目。 有没有办法编写将发布我的项目的VSCode任务?

Visual Studio Publish使用[target] .pubxml文件。我有“staging.pubxml”和“production.xml”。这些看起来像MSBuild文件。所以,也许这只是从Code执行msbuild任务的问题。但不知道从哪里开始。

另一个想法是我可以启动Web Deploy命令行工具。我从来没有用过,似乎第一个想法会更好。

3 个答案:

答案 0 :(得分:9)

假设您正在使用最新的vscode(1.7.x)。您可以使用Visual Studio Code的Task Runner。

首先,您需要按<F1>配置任务运行器并输入task。选择任务:配置任务运行器

vscode将创建一个新文件tasks.json,其中包含以下内容。

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "msbuild",
    "args": [
        // Ask msbuild to generate full paths for file names.
        "/property:GenerateFullPaths=true"
    ],
    "taskSelector": "/t:",
    "showOutput": "silent",
    "tasks": [
        {
            "taskName": "build",
            // Show the output window only if unrecognized errors occur.
            "showOutput": "silent",
            // Use the standard MS compiler pattern to detect errors, warnings and infos
            "problemMatcher": "$msCompile"
        }
    ]
}

其次,现在您需要添加新的发布任务。通过@Rolo给出的答案,您可以在tasks数组中添加新任务:

    {
        "taskName": "publish",
        // Always show errors from builds.
        "showOutput": "always",
        "args": [
            "/p:DeployOnBuild=true",
            "/p:PublishProfile=Test"
        ]
    }

第三,tasks.json完成后。您可以按publish + Ctrl(或Mac上的P + Cmd)来使用P任务,然后输入task publish

答案 1 :(得分:3)

要使用MSBuild发布,您需要使用以下命令:

msbuild <Project or Solution Path> /p:DeployOnBuild=true /p:PublishProfile=<Publish Profile Name>
  • 您可以指向一个解决方案,这将发布包含有效发布配置文件的所有项目:

    msbuild <FullPath>\MySolution.sln /p:DeployOnBuild=true /p:PublishProfile=Test
    
  • 您可以指向这样的特定项目:

    msbuild <FullPath>\Project1\MyProj.csproj /p:DeployOnBuild=true /p:PublishProfile=Test
    
  • 在这两种情况下,您还可以指定使用.pubxml文件的完整路径:

    msbuild <FullPath>\MySolution.sln /p:DeployOnBuild=true /p:PublishProfile=<FullPath>\PublishProfiles\Test.pubxml
    

实际上* .pubxml文件是MSBuild脚本,因此您可以像使用任何其他MSBuild脚本一样进行交互,例如,您可以从命令行替换属性,如下所示:

<强> Test.pubxml

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <WebPublishMethod>FileSystem</WebPublishMethod>
        <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
        <LastUsedPlatform>Any CPU</LastUsedPlatform>
        <SiteUrlToLaunchAfterPublish />
        <ExcludeApp_Data>False</ExcludeApp_Data>
        <publishUrl>C:\Deploy\MyProject\</publishUrl>
        <DeleteExistingFiles>True</DeleteExistingFiles>
    </PropertyGroup>
</Project>

    msbuild <FullPath>\MySolution.sln /p:DeployOnBuild=true /p:PublishProfile=<FullPath>\PublishProfiles\Test.pubxml /p:publishUrl:"D:\DifferentPath\DifferentFolder\"

您可以使用持续集成服务器或任何其他构建脚本中的这些命令。

其他信息:

Command Line Deployment

答案 2 :(得分:0)

您可以使用 dotnet publish 命令将其部署到本地或远程目录。

本地目录

dotnet publish -c Release -o ./publish

对于远程目录

dotnet publish -c release -p:PublishDir=//serverName/d$/inetpub/wwwroot/appName

dotnet publish 在幕后调用 MSBuild。

-c configName => 定义构建配置。

-o dirName => 指定输出目录。

-p:PublishDir=> 指定复制输出目录的目录

要了解 dotnet publish 命令,请访问 link

您也可以使用命令行在 VS Code 中使用 publish profile