【问题标题】:Can I stop Visual Studio 2012+ from ever publishing packages.config and EF diagram files?我可以阻止 Visual Studio 2012+ 发布 packages.config 和 EF 图表文件吗?
【发布时间】:2015-07-16 16:40:15
【问题描述】:

当我在 Visual Studio 2012/2013/2015 中发布 ASP.NET Web 应用程序时,Visual Studio 还将发布 packages.config(来自 NuGet)和任何 *.edmx。默认情况下,图表文件(来自实体框架)。

我知道我可以进入项目并单独将这些文件的属性从 Build Action Content 切换到 Build Action None,但是,我必须这样做对于我使用实体框架或任何其他 NuGet 提供的包的每个项目。

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

【问题讨论】:

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


【解决方案1】:

您可以通过 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 文件,该文件扩展了构建过程。

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

【讨论】:

    猜你喜欢
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多