【问题标题】:How can I mimic the VS 2012 "publish webSite" from command line (or in tfs automated build)?如何从命令行(或在 tfs 自动构建中)模仿 VS 2012“发布网站”?
【发布时间】:2014-11-02 23:09:33
【问题描述】:

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

如果你想创建一个像这样的项目,你可以创建一个空的解决方案,添加 -> 新网站(在组合框中的按钮上选择文件系统),添加一个空的类文件,右键单击解决方案中的网站行资源管理器,在解决方案行下,发布网站,您需要创建一个新配置文件 - 非常简单 - 基本上选择“文件系统”然后发布。

我在 VS2012 上运行,更新 4。

【问题讨论】:

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


    【解决方案1】:

    如果你传入一个 MSbuild 参数

    /p:DeployOnBuild=true;PublishProfile=PROFILENAME
    

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

    编辑

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

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

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

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

    在此我已将发布位置设置为 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>
    

    【讨论】:

    • 我已经尝试过了,但它似乎只适用于 web 项目项目而不适用于 webSite 项目(我没有它需要的 *.csproj 文件)。当我在解决方案文件上执行此操作时,它只是对解决方案进行了常规构建。
    • 抱歉,现在已经运行了一个示例项目并添加了使其工作的步骤
    • 我还有更多的项目要构建,所以不能像这样完成,因为其他项目被编译为 Dll 等。我会检查它是否单独适用于该项目,如果它'我会检查 RunMsbuil Activity 获得的参数,并将尝试使用它。我对 VS trail 的订阅已经结束,我希望这周能把它修好,并让你知道它是怎么回事......
    猜你喜欢
    • 2013-05-17
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 2018-07-04
    • 1970-01-01
    相关资源
    最近更新 更多