在Visual Studio 2013中使用“发布网站”功能时。如何排除发布web.config以使其不会覆盖服务器web.config?
除VS版本外,问题与以下内容相同。
How to exclude web.config when publishing with Visual Web Developer Express?
但是,其解决方案不适用于VS2013。在VS2013中找不到“构建操作”选项。设置“ExcludeFilesFromDeployment”会导致编译问题。
答案 0 :(得分:28)
只需选择web.config属性并更改'构建操作'没有'没有'和'复制到输出目录'不要复制'
答案 1 :(得分:5)
我知道这是一篇老文章,有老答案,但是对我来说,两个描述的解决方案都是错误的。
Web.config风味在操作环境凭据时会带来安全风险,而“ Build Action” =“ None”解决方案则消除了在本地调试项目的可能性,因为Web.Config文件将从不出现在“ bin”目录中。
这里描述了一种更清洁的解决方案:
基本上是创建一个 ProjectName .wpp.targets文件,其中包含在发布项目时要排除的文件/文件夹的列表。
要从名为 Blog 的项目中删除 Web.config ,您需要创建一个名为 Blog.wpp.targets 的文件像这样:
文件:Blog.wpp.targets
<?xml version="1.0" encoding="utf-8" ?>
<Project ToolsVersion="4.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ExcludeFromPackageFiles Include=".\Web.config">
<FromTarget>Blog.wpp.targets</FromTarget>
</ExcludeFromPackageFiles>
</ItemGroup>
</Project>
无需更改项目或.csproj文件中的任何内容。
答案 2 :(得分:4)
排除web.config文件不是推荐的解决方案。您应该使用web.config转换文件,这是 web.xxx.config 文件。
当您发布网站时,Visual Studio会将您的本地web.config与相应的 web.xxx.config 文件合并
配置转换文件使用XDT(XML文档转换)语法。例如,如果要更改 connectionstring ,可以在转换文件中使用这段代码:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="MyDB"
connectionString="value for the deployed Web.config file"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
有关更多示例和信息,请参阅Web.config Transformation Syntax for Web Project Deployment Using Visual Studio。
答案 3 :(得分:0)
2020,并使用AspCore项目,然后尝试在.csproj中添加以下代码:
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>
请参阅https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2#webconfig-file
答案 4 :(得分:0)