visual-studio - 我可以阻止 Visual Studio 2012+ 发布packages.config 和EF 图表文件吗?

标签 visual-studio visual-studio-2012 one-click-web-publishing

当我在 Visual Studio 2012/2013/2015 中发布 ASP.NET Web 应用程序时,Visual Studio 也会发布 包.config (来自 NuGet)和任何 *.edmx.diagram 文件(来自 Entity Framework ),默认情况下。

我知道我可以进入项目并从单独切换这些文件的属性。构建 Action 内容 构建操作 无 ,但是,我必须为我使用 Entity Framework 或任何其他 NuGet 提供的包的每个项目执行此操作。

我可以 configure the publishing process在逐个项目的基础上排除文件,但是否可以在全局范围内告诉 Visual Studio 2012/2013/2015 在所有项目中排除这些文件?

最佳答案

您可以通过 web.config 文件中的扩展名或文件名修改属性排除文件。查看 buildproviders element in web.config 的文档.您可以添加扩展并将其映射到 System.Web.Compilation.ForceCopyBuildProvider,或添加文件名并使用 System.Web.Compilation.IgnoreFileBuildProvider

buildproviders 部分具有以下结构:

<buildProviders> 
   <add />
   <clear/>
   <remove />
</buildProviders>

您还可以通过修改项目文件来排除文件或文件夹。在 PropertyGroup 元素中,您可以添加 ExcludeFilesFromDeployment 和 ExcludeFoldersFromDeployment 元素以排除所需的项目。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
  <ExcludeFilesFromDeployment>File1.aspx;File2.aspx</ExcludeFilesFromDeployment> 
  <ExcludeFoldersFromDeployment>Folder1;Folder2</ExcludeFoldersFromDeployment> 
</PropertyGroup>

有关更多详细信息,请参阅此问题的答案:Exclude files from web site publish in Visual Studio

更新:为了满足修订后的要求,即您能够在所有项目和解决方案中全局执行此操作,我建议您创建一个 build target可以导入到项目文件中的文件。在目标文件中,您可以确定要排除的文件和文件夹。

为了更轻松地将此构建目标交付给您的所有解决方案,您可以创建一个包含目标文件的 NuGet 包并相应地修改您的 .csproj 文件。

这本质上是 SlowCheetah 使用的方法。将 web.config 转换过程扩展到其他 .config 文件; NuGet 包提供了一个自定义 .targets 文件,用于扩展构建过程。

初始设置是一种努力,但如果您支持大量解决方案或团队,这可能是最好的方法。

关于visual-studio - 我可以阻止 Visual Studio 2012+ 发布packages.config 和EF 图表文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31459951/

相关文章:

visual-studio - 从 TypeScript Web Publish 中排除转译/不存在的 .JS 文件

c++ - 没有合适的方法将 C++ STL 字符串添加到 C++ rest sdk json 对象实用程序 string_t

visual-studio-2012 - TFS 2013 Web 访问“部署”选项卡

c# - 自定义组框未绑定(bind)到绑定(bind)源

visual-studio-2012 - Visual Studio 11 (2012) beta 到 RC?

visual-studio-2012 - Visual Studio 2012 Web Deploy发布预览显示更改后的所有文件

.net - 应用程序未清除表单关闭上的对话框内容

c# - Visual Studio 中类型名称的条件断点

C++ 控制台应用程序立即退出?

visual-studio-2010 - 使用 1 单击 Publish 进行调试/发布构建配置,具体取决于所选的发布配置文件