You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建时动态生成的.resx文件无法嵌入.NET程序集,如何解决?

解决方案:动态生成.resx并嵌入.NET程序集

你的问题核心是动态生成的.resx文件未被MSBuild的资源处理流程识别,调整目标执行时机+显式标记资源类型即可解决,具体步骤如下:

1. 调整任务执行时机

将BeforeTargets从BeforeBuild改为GenerateResource——这个目标是MSBuild处理.resx文件、生成二进制资源的核心前置步骤,在此之前生成.resx才能被后续流程捕获。

2. 显式标记生成的文件为嵌入资源

MSBuild不会自动识别动态生成的文件,必须手动将生成的.resx添加到EmbeddedResource项集合中,确保它被编译并嵌入程序集。

修改后的.csproj配置示例:

<Target Name="CreateResx"
        BeforeTargets="GenerateResource"
        Inputs="<list of input files>"
        Outputs="<list of created .resx files>">
    <CustomResxCreationTask />
    <!-- 将生成的.resx文件纳入嵌入资源流程 -->
    <ItemGroup>
        <EmbeddedResource Include="@(Outputs)" />
    </ItemGroup>
</Target>

关键说明

  • 若你的CustomResxCreationTask会输出生成的文件路径(比如通过Output参数),可以直接用@(TaskOutputFiles)代替@(Outputs),确保路径准确。
  • 保持Inputs和Outputs的正确配置,这样MSBuild能实现增量构建——只有输入文件变化时才会重新生成.resx,避免重复构建。

内容的提问来源于stack exchange,提问作者Marcel V.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 23:12:07