当我将Asp.Net MVC网站发布到生产服务器(通过VS2008)时,web.config& castle.xml文件被覆盖。这些文件的内容在我的本地开发环境和生产服务器之间明显不同。
如何阻止发布这些文件?
答案 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)
<PropertyGroup>
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>
选择 web.config 并在属性窗口中更改:
"Copy to Output Directory"="Do not copy"