如何:在项目文件中编辑部署设置

Visual Studio UI 不提供用于指定针对 Visual Studio Web 应用程序项目创建 Web 部署包的方式或一键式发布的工作方式的每个设置的方法。 若要更改 Visual Studio 未提供针对其的 UI 的设置,您必须在项目文件中更改这些设置。 本主题介绍如何执行此操作。

本主题不枚举可更改的所有设置,也不介绍如何设置每次打开新项目时应用的默认值。 其他 ASP.NET 部署主题介绍了可用的选项,并且这些主题已与本主题链接,以提供描述如何更改这些选项的说明。 有关更多信息,请参见 ASP.NET 部署内容映射

如果您熟悉 MSBuild,则可在用于 Web 发布的 .targets 文件中设置默认值。 这些文件位于以下文件夹中:

%Program Files%\MSBuild\Microsoft\VisualStudio\v10.0\Web

有关 MSBuild 的更多信息,请参见 MSBuild 参考

编辑项目文件

下面的过程说明如何编辑项目文件以及如何查找需要更改的 XML 元素。

打开并编辑项目文件

  1. 可使用下列方法之一打开项目的 .project 文件(该文件的扩展名为 .csproj 或 .vbproj):

    • 如果该项目在某个解决方案中,并且如果您已在 Visual Studio 中打开该项目,请在**“解决方案资源管理器”中右击该项目的名称并选择“卸载项目”,然后右击该项目并选择“编辑”。 (如果您希望在只包含一个项目的解决方案中使用此方法,请确保已选中“总是显示解决方案”选项。 可以在“选项”对话框(可从“工具”菜单选择此对话框)的“项目和解决方案”**部分中查找此选项。)

    • 可使用 Windows 资源管理器导航到该项目的目录,然后使用记事本或另一个文本编辑器打开 .csproj 或 .vbproj 文件。 (可以在**“属性”窗口的“项目文件夹”**字段中查找项目文件夹的路径。)

  2. 查找与要为其输入设置的生成配置有关的 PropertyGroup 元素。

    例如,如果要为 Debug 生成配置创建设置,请查找具有以下开始标记的 PropertyGroup 元素:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

  3. 如果要配置的设置与数据库部署无关,请在 PropertyGroup 元素下添加一个新元素。

    例如,假设您查找以下 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>
      <!-- Other settings -->
    </PropertyGroup>
    

    若要更改创建程序包的默认位置,请添加 IntermediateOutputPath 元素,如下图所示:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
      <IntermediateOutputPath>C:\TEMP\</IntermediateOutputPath>
      <DebugType>pdbonly</DebugType>
      <Optimize>true</Optimize>
      <OutputPath>bin\</OutputPath>
      <DefineConstants>TRACE</DefineConstants>
      <ErrorReport>prompt</ErrorReport>
      <WarningLevel>4</WarningLevel>
      <!-- Other settings -->
    </PropertyGroup>
    
  4. 若要配置与数据库部署相关的设置,请执行以下步骤:

    1. 在要更改的 PropertyGroup 元素中查找 PublishDatabaseSettings 元素。

      PublishDatabaseSettings 元素类似于下面的示例:

      <PublishDatabaseSettings>
        <Objects>
          <ObjectGroup Name="ApplicationServices-Deployment"
            Order="1">
            <Destination Path="" />
            <Object Type="dbFullSql">
              <PreSource Path="..." ScriptSchema="True" 
                ScriptData="False"
                CopyAllFullTextCatalogs="False" />
              <Source Path="..." Transacted="True" />
            </Object>
          </ObjectGroup>
        </Objects>
      </PublishDatabaseSettings>
      
    2. 在 PublishDatabaseSettings 元素中,查找与要配置的数据库对应的 ObjectGroup 元素。

      对于已在**“打包/发布 SQL”选项卡上的“数据库项”网格中输入的每一行,您将会看到一个 ObjectGroup 元素。 ObjectGroup 元素的名称是“数据库项”**网格中的名称。

    3. 在 ObjectGroup 元素中,查找与要配置的脚本对应的 Object 元素。

      每个数据库脚本都有一个 Object 元素。 上一示例中的 Object 元素表示自动生成的部署脚本。 如果添加自定义脚本,每个自定义脚本将有另一个 Object 元素。

      Object 元素中包含 Source 和 PreSource 元素。 对于您可能需要在项目文件中配置的大多数数据库设置而言,它们需要设置这些元素的特性。

    4. 设置 Source 或 PreSource 元素的特性以配置数据库部署。

      例如,您可能希望更改上一个示例,以便自动生成的脚本包含每个数据库对象的 SQL Drop 语句,该语句先于创建对象的语句运行。 为此,可将 ScriptDropsFirst 特性添加到 PreSource 元素,如下面的示例所示:

      <PublishDatabaseSettings>
        <Objects>
          <ObjectGroup Name="ApplicationServices-Deployment"
            Order="1">
            <Destination Path="" />
            <Object Type="dbFullSql">
              <PreSource Path="..." ScriptSchema="True" 
                ScriptData="False" ScriptDropsFirst="True"
                CopyAllFullTextCatalogs="False" />s
              <Source Path="..." Transacted="True" />
            </Object>
          </ObjectGroup>
        </Objects>
      </PublishDatabaseSettings>
      
  5. 保存更改并关闭项目文件。

  6. 如果通过卸载项目编辑了项目文件,请在**“解决方案资源管理器”中右击该项目,然后选择“重新加载项目”**。

  7. 从 Build 菜单中选择**“清理”**项目名称。

请参见

概念

ASP.NET 部署内容映射