提问人:Luke Vo 提问时间:10/25/2023 更新时间:10/25/2023 访问量:59
使用 WebDeploy 将网站部署到 IIS ASP.NET 时,我只能创建 appsettings。Production.json如果它不存在?
When using WebDeploy to deploy ASP.NET website to IIS, can I only create appsettings.Production.json if it does not exist?
问:
我的项目包含两个文件和一个默认文件。但是,管理员可以在服务器上手动编辑生产文件,如果我再次发布它,它就会被覆盖。appsettings.json
appsettings.Production.json
如果此文件已存在,我是否可以以某种方式仅指定此文件不被覆盖?
请注意,这个问题不起作用,因为显然它不适用于 Web 部署(IIS 发布),我希望它不覆盖,即使项目中的文件较新(即管理员在我们修改它之前编辑它在代码中)。CopyToPublishDirectory="PreserveNewest"
答:
1赞
YurongDai
10/25/2023
#1
在生成 Web 包时,可以通过在与 Web 应用程序项目文件相同的文件夹中创建自定义文件来排除特定文件或文件夹。.wpp.targets
在与项目文件相同的文件夹中创建名为 [project name].wpp.targets 的自定义项目文件。
在 .wpp.targets 文件中,添加一个 ItemGroup 元素。
在 ItemGroup 元素中,添加 ExcludeFromPackageFolders 和 ExcludeFromPackageFiles 项,以根据需要排除特定文件和文件夹。
以下是此文件的基本结构:.wpp.targets
<Project ToolsVersion="4.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ExcludeFromPackageFolders Include="[semi-colon-separated folder list]">
<FromTarget>[arbitrary metadata value]</FromTarget>
</ExcludeFromPackageFolders>
<ExcludeFromPackageFiles Include="[semi-colon-separated file list]">
<FromTarget>[arbitrary metadata value]</FromTarget>
</ExcludeFromPackageFiles>
</ItemGroup>
</Project>
然后,需要将该文件添加到 Web 应用程序项目,并使用此文件排除 appsettings.json 和 appsettings。生成项目时从 Web 包Production.json。.wpp.targets
有关详细信息,请参阅此文档:从部署中排除文件和文件夹
评论
0赞
Luke Vo
10/26/2023
嗨,如果我没看错的话,这个文件与整个构建过程相关联,而不是与每个发布配置文件相关联,对吧?这意味着所有部署要么都有该文件?
0赞
YurongDai
10/26/2023
是的,.wpp.targets 文件与整个生成过程相关,并不特定于单个发布配置文件。在 Web 应用程序项目中创建并包含 .wpp.targets 文件时,该文件中指定的排除项将应用于项目的所有部署和发布操作。因此,如果要对不同的发布配置文件使用不同的排除项,则需要根据要求在 .wpp.targets 文件本身中管理这些排除项。此文件将成为项目配置的一部分,并将应用于所有部署,除非您对其进行修改。
评论