You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何阻止.NET Core 2.0中Resource[.resx]文件被预编译?

阻止.resx文件编译为.dll并保留原文件的方法

当然可以做到!默认情况下,Visual Studio会把.resx文件编译成附属资源程序集,但通过调整项目配置,你就能让这些文件在发布后保持原样。下面是具体的操作步骤:

1. 手动修改项目文件(.csproj)

右键项目选择「编辑项目文件」,针对目标.resx文件调整配置:

  • 将原本的<EmbeddedResource>节点替换为<Content>节点,同时设置复制规则,确保文件能同步到发布目录:
<Content Include="YourResourceFile.resx">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
  • 如果要批量处理所有.resx文件,可以用通配符批量设置,记得移除原有的嵌入资源配置避免冲突:
<ItemGroup>
  <Content Include="**/*.resx">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
  <EmbeddedResource Remove="**/*.resx" />
</ItemGroup>

2. 通过Visual Studio可视化界面调整

不想手动写XML的话,也可以用UI操作快速修改:

  • 在解决方案资源管理器中选中目标.resx文件
  • 按F4调出属性窗口,修改以下两项:
    • 生成操作:从「嵌入的资源」改为「内容」
    • 复制到输出目录:选择「如果较新则复制」或「始终复制」

3. 后续注意事项

  • 调整后,.resx文件会被当作普通内容文件复制到发布目录,不再编译为dll。但如果你原本用ResourceManager读取嵌入资源,现在需要修改读取逻辑,改为直接读取文件内容。
  • 项目中自动生成的强类型资源类(比如YourResourceFile.Designer.cs)是基于嵌入资源生成的,保留原.resx文件后这类自动代码会失效,需要手动移除或调整。

内容的提问来源于stack exchange,提问作者Akbar Badhusha

火山引擎 最新活动