如何防止“发布Web”覆盖配置文件?

时间:2010-05-11 17:20:26

标签: asp.net asp.net-mvc visual-studio-2008

当我将Asp.Net MVC网站发布到生产服务器(通过VS2008)时,web.config& castle.xml文件被覆盖。这些文件的内容在我的本地开发环境和生产服务器之间明显不同。

如何阻止发布这些文件?

5 个答案:

答案 0 :(得分:23)

在Visual Studio解决方案资源管理器中,转到web.config文件的属性。确保“Build Action”为“None”,“Copy to Output Directory”为“Do not copy”。

如果您希望以后更新它,则必须手动执行此操作或将“构建操作”更改回“内容”。下次构建(或发布)时,它将覆盖它。

答案 1 :(得分:1)

永远不要直接从Visual Studio发布到生产服务器!

发布到测试服务器以查看QA,然后从QA复制到生产(对于没有iis更改的现有网站,只需复制文件)。

我所处的位置,我们还将这些已发布的文件分别保留在版本控制之下,因此当QA在构建中注销时,部署过程只是从生产服务器上的源代码控制中检出文件。

答案 2 :(得分:1)

我通过添加以下排除项来解决它:

<ExcludeFilesFromDeployment>Web.config</ExcludeFilesFromDeployment>

在以下节点中找到项目文件(.csproj或.vbproj):

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

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

请参见Web Deployment: Excluding Files and Folders via the Web Application’s Project File

答案 3 :(得分:0)

我们使用Jenkins管道将.Net Core / Framework应用程序部署到ISS服务器。

其中一个步骤定义了一个Power Shell脚本,该脚本使用指定的项目调用MSBuild并发布配置文件。

ExcludeFilesFromDeployment标记添加到“发布配置文件”脚本中即可。

WebDeploy-Staging.pubxml

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <!-- All the other tags excluded for brevity -->

    <ExcludeFilesFromDeployment>Web.config</ExcludeFilesFromDeployment>

  </PropertyGroup>
</Project>
</Project>

答案 4 :(得分:0)

  1. 将此添加到项目文件 (*.csproj):
<PropertyGroup>
  <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>
  1. 删除您的 web.config

选择 web.config 并在属性窗口中更改:

    "Copy to Output Directory"="Do not copy"