【问题标题】:How to exclude web.config when publishing with Visual Studio 2013?使用 Visual Studio 2013 发布时如何排除 web.config?
【发布时间】:2015-07-13 13:20:42
【问题描述】:

在 Visual Studio 2013 中使用“发布网站”功能时。如何排除发布 web.config 以使其不会覆盖服务器 web.config?

除了VS版本之外,问题与以下相同。

How to exclude web.config when publishing with Visual Web Developer Express?

但是,它的解决方案不适用于 VS2013。在 VS2013 中找不到“构建操作”选项。并且设置“ExcludeFilesFromDeployment”会导致编译问题。

【问题讨论】:

  • 请详细说明您在使用“ExcludeFilesFromDeployment”时遇到的编译问题?
  • 正如 Cyril Durand 回答的那样,不要。您的问题不是如何排除 web.config,而是如何拥有两个不同的 web.config 文件。这是使用转换和发布配置文件完成的

标签: asp.net visual-studio visual-studio-2013


【解决方案1】:

不推荐排除 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

【讨论】:

  • @Lai 1/ 没有对 web.xxx.sitemap 的内置支持,但您可以手动更改您的 csproj 来做到这一点。看看下面的链接publicityson.blogspot.fr/2011/04/…。 2/ 网站在构建定制方面确实受到限制,我建议将您的网站迁移到 Web 应用程序,这样会简单得多。
  • 当我希望做任何 MS 产品开箱即用不支持的事情时,它看起来很 hacky。
  • 这不是解决方案。许多 web.config 文件包含特定于部署的机密,这些机密不应该在源代码控制中,或者(可能)甚至对开发人员不可用。它也不处理多个不同的部署。
  • 如果您的 web.config 文件中有凭据,这将是一个非常糟糕的解决方案。
  • 这不是用户要求的
【解决方案2】:

只需选择 web.config 属性并将“构建操作”更改为“无”,将“复制到输出目录”更改为“不复制”

【讨论】:

  • 我在属性中找不到“构建操作”。该项目是一个网站项目。
  • 完美。接受的解决方案不好,一旦您可以提交一些凭据。
  • 也许功能最近发生了变化,但是通过这两个设置,“构建操作”为“无”和“复制到输出目录”为“不复制”,我的部署现在删除了 web。配置:`C:\&gt; .\Mysite.deploy.cmd /T ....``信息:删除文件(Mysite\Web.config)。``....`
  • 由于时间限制为 5 分钟,无法编辑上述评论。预期的更改如下:也许功能最近发生了变化,但是通过这两个设置,“构建操作”为“无”和“复制到输出目录”为“不复制”,我的部署现在删除了 web.config。如何在此处选择“单独保留 web.config”作为选项?
【解决方案3】:

我知道这是一篇旧帖子,有旧答案,但对我来说,两种描述的解决方案都是错误的。

Web.config 风格在操作环境凭据时会引发安全风险,并且“Build Action”="None" 解决方案破坏了在本地调试项目的可能性,因为 Web.Config 文件将永远不会 存在于“bin”目录中。

这里描述的是更清洁的解决方案:

https://docs.microsoft.com/fr-fr/aspnet/web-forms/overview/deployment/advanced-enterprise-web-deployment/excluding-files-and-folders-from-deployment

这基本上是创建一个 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 文件中的任何内容。

【讨论】:

    【解决方案4】:

    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

    【讨论】:

      【解决方案5】:

      如果您从 Visual Studio 发布到 Azure App Services(我使用的是 2019),并且没有将 web.config 的 Build Action 设置为“none”,则每次都可以这样做:

      1. 右键单击您的项目,选择发布。然后单击“预览更改”。

      2. 然后取消选中 web.config 文件,使其不会被发布。您还将有机会查看将要发布的内容。

      我这样做是因为我发布到多个实例,每个实例都有不同的版本。这样我每次都可以查看 web.config 以确保是否添加了任何其他 AppSettings 配置,我会注意到它。

      【讨论】:

      • 这是我一直在寻找的东西,已经有一段时间了。谢谢一堆。 +1
      【解决方案6】:

      对于旧版 ASP.NET Web 应用程序,将 &lt;ExcludeFilesFromDeployment&gt;Web.config&lt;/ExcludeFilesFromDeployment&gt; 添加到位于 Properties\PublishProfiles 文件夹中的相应 .xmlpub 配置文件中。

      <Project>
          <PropertyGroup>                          
              <ExcludeFilesFromDeployment>Web.config</ExcludeFilesFromDeployment>             
          </PropertyGroup>
      </Project>  
      
      
          
      

      【讨论】:

      • 排除多种文件格式; Web.config;File2.xyz;File3.xyz 排除文件夹; Folder1;Folder2;Folder3
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多