Jam*_*emp 6 visual-studio one-click-web-publishing visual-studio-2012
当我在Visual Studio 2012/2013/2015中发布ASP.NET Web应用程序时,默认情况下,Visual Studio还将发布packages.config(来自NuGet)和任何*.edmx.diagram文件(来自Entity Framework).
我知道我可以进入项目并单独将这些文件的属性从Build Action Content切换到Build Action None,但是,我必须为我使用Entity Framework的每个项目或任何其他NuGet提供的包执行此操作.
我可以将发布过程配置为逐个项目地排除文件,但是是否可以在所有项目中全局告诉Visual Studio 2012/2013/2015 排除这些文件?
您可以通过 web.config 文件中的扩展名或文件名修改属性排除文件。查看web.config 中 buildproviders 元素的文档。您可以添加扩展并将其映射到 System.Web.Compilation.ForceCopyBuildProvider,或添加文件名并使用 System.Web.Compilation.IgnoreFileBuildProvider
buildproviders 部分具有以下结构:
<buildProviders>
<add />
<clear/>
<remove />
</buildProviders>
Run Code Online (Sandbox Code Playgroud)
您还可以通过修改项目文件来排除文件或文件夹。在 PropertyGroup 元素中,您可以添加 ExcludeFilesFromDeployment 和 ExcludeFoldersFromDeployment 元素以排除所需的项目。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<ExcludeFilesFromDeployment>File1.aspx;File2.aspx</ExcludeFilesFromDeployment>
<ExcludeFoldersFromDeployment>Folder1;Folder2</ExcludeFoldersFromDeployment>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅此问题的答案:从网站中排除文件在 Visual Studio 中发布
更新:为了响应修订后的要求,即您能够在所有项目和解决方案中全局执行此操作,我建议您创建一个可以导入到项目文件中的构建目标文件。在目标文件中,您可以确定要排除的文件和文件夹。
为了更轻松地将此构建目标交付给您的所有解决方案,您可以创建一个 NuGet 包,其中包含目标文件并相应地修改您的 .csproj 文件。
这本质上是SlowCheetah用来将 web.config 转换过程扩展到其他 .config 文件的方法;NuGet 包提供了一个自定义 .targets 文件,用于扩展构建过程。
初始设置是一种努力,但如果您支持大量解决方案或团队,这可能是最好的方法。