如何阻止Visual Studio部署ASP.NET Core 2项目时替换指定配置文件?
解决Visual Studio部署时替换appsettings.json和Web.config的问题
我之前也碰到过一模一样的困扰——每次部署ASP.NET Core 2应用,Visual Studio总会把我服务器上已经配置好的appsettings.json和Web.config给覆盖掉,折腾半天才能恢复正常运行。别担心,这几个方法能帮你彻底解决这个问题:
方法1:直接编辑项目文件(.csproj)
ASP.NET Core项目的发布行为其实是由.csproj文件控制的,我们可以直接修改它来排除这两个文件的部署:
- 在解决方案资源管理器里右键点击项目,选择“编辑项目文件”
- 在打开的XML文件中,添加下面的配置块:
<ItemGroup> <!-- 移除appsettings.json的发布标记,将其设为项目内但不发布的文件 --> <Content Remove="appsettings.json" /> <None Include="appsettings.json" /> <!-- 对Web.config执行同样的操作 --> <Content Remove="Web.config" /> <None Include="Web.config" /> </ItemGroup>
- 保存文件,之后部署时这两个文件就不会被包含在发布包中了。
方法2:通过Visual Studio文件属性设置
如果你不想手动编辑XML文件,也可以通过UI操作来设置:
- 在解决方案资源管理器中找到
appsettings.json和Web.config文件 - 右键点击文件,选择“属性”
- 在属性窗口里,把生成操作设置为
无,把复制到输出目录设置为不复制 - 保存设置后,发布时Visual Studio就会跳过这两个文件。
方法3:修改发布配置文件(.pubxml)
如果你使用了自定义的发布配置文件,可以在里面添加排除规则:
- 打开项目下的
Properties/PublishProfiles文件夹,找到你的发布配置文件(比如FolderProfile.pubxml) - 在文件中添加以下配置:
<ItemGroup> <ExcludeFilesFromDeployment Include="appsettings.json" /> <ExcludeFilesFromDeployment Include="Web.config" /> </ItemGroup>
- 保存后,用这个配置文件发布时,指定的文件就会被排除在外。
额外提示
如果你的需求是保留服务器上的自定义配置,同时又想在开发环境正常使用这些文件,也可以考虑使用环境特定配置文件(比如appsettings.Production.json),部署时让应用加载生产环境的配置文件,这样既不会覆盖服务器上的设置,也能保持开发环境的配置独立性。
内容的提问来源于stack exchange,提问作者pitaridis
相关产品推荐
相关产品推荐

