如何在 Visual Studio 2015 中使用 MSBuild 在构建中部署 ASP.NET MVC 应用程序?

How to deploy an ASP.NET MVC application on build using MSBuild in Visual Studio 2015?

我希望在构建项目时将应用程序部署到本地文件夹。这应该会生成一个 zip 文件,我可以使用它在 IIS 中导入。我怎样才能做到这一点?

命令行

msbuild yoursolutionfile.sln /p:DeployOnBuild=true 
/p:WebPublishMethod=Package 
/p:PackageAsSingleFile=true 
/p:PackageLocation="yourpath\yourfilename.zip"

DeployOnBuild 告诉 msbuild 部署(到包位置)

WebPublishMethod 创建部署包。您可以为网络发布选择其他选项,如文件复制。

PackageAsSingleFile 压缩输出

以上是命令行中的全部 运行,虽然不是在 VS 中执行,但一步构建和部署。您可以随时打开命令 window 运行 此命令。

对比

您可以在 VS 中使用 Web Deployment Publish Wizard。它在构建菜单中。它还会引导您完成这些步骤。

但是,这只是在构建发生之后,并且是第二步。

一次完成所有工作,好吧,通过 VS 构建的网络发布不是 "supported"。就像,这不是一个简单的方法。您可以 运行 我在 post-build 中显示的 cmd 但这实际上意味着第二次重新编译,我认为这是一个可怕的想法,所以除非这是一个非常小的项目,否则不要这样做,即使那样,不,也许吧。

VS一步到位

返回 MSBUILD,但更改项目文件的 xml(msbuild 命令)。

首先创建您的发布配置文件(由发布向导创建的文件)。这实质上是从我的第一个示例中创建 msbuild 的设置,但将其保存到文件中。

然后按照@richardSzalay or

所述编辑项目文件 (csproj)

csproj文件是VS使用的msbuild命令。在这些示例中,您创建了一些属性(属性组)来设置部署和 AfterBuild 目标 运行 发布。

从 csproj 中找到以下 属性 个组:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>

第一个用于调试,第二个用于发布。

在两个 属性 组中添加以下内容(如果您希望自动构建在调试和发布模式下发生)。

<DeployOnBuild>true</DeployOnBuild>
<PublishProfile>Server</PublishProfile>

它现在将为 Visual studio 构建和 MSBuild 自动发布。