如何从命令行(或在tfs自动构建中)模仿VS 2012“发布webSite”?

时间:2014-09-09 13:39:15

标签: asp.net visual-studio-2012 tfs msbuild

我有一个WebSite,它位于我计算机上的文件夹中。它没有.csproj - 只是文件夹中的所有文件。我想在自动构建中执行发布网站,这基本上是使用msbuild.exe和\或msdeploy.exe和\或aspnet_compiler.exe和/或其他任何内容在命令行中执行。

如果您想创建一个类似的项目,您可以创建一个空的解决方案,添加 - >新网站(在组合框中选择文件系统),添加一个空类文件,右键单击解决方案资源管理器中的网站行,在解决方案行下,发布网站,在那里你需要创建一个新的配置文件 - 真的很容易 - 基本上选择"文件系统"然后发布。

我在VS2012上运行,更新4。

1 个答案:

答案 0 :(得分:1)

如果传入

的MSbuild参数
/p:DeployOnBuild=true;PublishProfile=PROFILENAME

如果您的个人资料设置正确,它应该与从VS发布相同

  

修改

很抱歉只需要运行其中一个来查看会发生什么

当您将网站签入TFS时,它会创建一个网站文件夹。

web site source control structure

然后,您可以将构建映射到此文件夹。

而不是将构建映射到sln文件,您可以指向publishproj文件,这将在您创建发布配置文件时创建。这告诉构建要做什么

build args for a web site build

在此我将发布位置设置为c:\ publish,在构建之后,我将输出放在名为c:\ publish的文件夹中。

生成的publishproj文件如下所示

<?xml version="1.0" encoding="utf-8"?>

<!--

***********************************************************************************************
website.publishproj

WARNING: DO NOT MODIFY this file, it is used for the web publish process.

Copyright (C) Microsoft Corporation. All rights reserved.

***********************************************************************************************
-->

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>10.0.30319</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{f17a9da4-9b68-41e4-ab73-5ac72898b384}</ProjectGuid>
    <SourceWebPhysicalPath>$(MSBuildThisFileDirectory)</SourceWebPhysicalPath>
    <SourceWebVirtualPath>/WebSite1</SourceWebVirtualPath>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <SourceWebProject>http://localhost:61874</SourceWebProject>
    <SourceWebMetabasePath>/IISExpress/7.5/LM/W3SVC/15/ROOT</SourceWebMetabasePath>
  </PropertyGroup>
  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <!-- for VS2010 we need to use 10.5 but for VS2012+ we should use VisualStudioVersion -->
    <WebPublishTargetsVersion Condition=" '$(WebPublishTargetsVersion)' =='' and '$(VisualStudioVersion)' == 10.0 ">10.5</WebPublishTargetsVersion>
    <WebPublishTargetsVersion Condition=" '$(WebPublishTargetsVersion)'=='' ">$(VisualStudioVersion)</WebPublishTargetsVersion>

    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(WebPublishTargetsVersion)</VSToolsPath>
    <_WebPublishTargetsPath Condition=" '$(_WebPublishTargetsPath)'=='' ">$(VSToolsPath)</_WebPublishTargetsPath>
    <AssemblyFileVersion Condition="'$(AssemblyFileVersion)' == ''">1.0.0.0</AssemblyFileVersion>
    <AssemblyVersion Condition="'$(AssemblyVersion)' == ''">1.0.0.0</AssemblyVersion>
  </PropertyGroup>
  <ItemGroup>
    <AssemblyAttributes Include="AssemblyFileVersion">
      <Value>$(AssemblyFileVersion)</Value>
    </AssemblyAttributes>
    <AssemblyAttributes Include="AssemblyVersion">
      <Value>$(AssemblyVersion)</Value>
    </AssemblyAttributes>
  </ItemGroup>
  <Import Project="$(_WebPublishTargetsPath)\Web\Microsoft.WebSite.Publishing.targets" />
</Project>