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

如何消除使用EmbeddedResource时出现的CS2002警告?

我已尝试的方案

我在csproj中使用以下配置,从纯文本创建资源文件并生成强类型文件:

<ItemGroup>
  <EmbeddedResource Include="Resources\MyResources.restext">
    <StronglyTypedLanguage>C#</StronglyTypedLanguage>
    <StronglyTypedFileName>Resources\MyResources.Designer.cs</StronglyTypedFileName>
    <StronglyTypedNamespace>$(RootNamespace).Resources</StronglyTypedNamespace>
    <StronglyTypedClassName>MyResources</StronglyTypedClassName>
  </EmbeddedResource>
</ItemGroup>

资源生成本身无问题,但MyResources.Designer.cs会输出CS2002警告。

问题

可通过哪些配置设置来阻止该警告输出?

解决方法

CS2002警告的核心原因是自动生成的MyResources.Designer.cs被重复纳入编译流程(既作为资源生成的输出,又被默认编译项自动包含),可通过以下几种配置解决:

方法一:标记自动生成文件并关联资源

在<EmbeddedResource>节点中添加自动生成标记,同时关联到源资源文件,让编译系统识别它是自动生成的辅助文件,避免重复编译:

<ItemGroup>
  <EmbeddedResource Include="Resources\MyResources.restext">
    <StronglyTypedLanguage>C#</StronglyTypedLanguage>
    <StronglyTypedFileName>Resources\MyResources.Designer.cs</StronglyTypedFileName>
    <StronglyTypedNamespace>$(RootNamespace).Resources</StronglyTypedNamespace>
    <StronglyTypedClassName>MyResources</StronglyTypedClassName>
    <AutoGen>True</AutoGen>
    <DependentUpon>MyResources.restext</DependentUpon>
  </EmbeddedResource>
  <!-- 若上述配置仍生效,可显式移除重复的编译项 -->
  <Compile Remove="Resources\MyResources.Designer.cs" />
</ItemGroup>

方法二:全局忽略CS2002警告

如果只需屏蔽该特定警告,可在项目配置中添加全局警告排除:

<PropertyGroup>
  <NoWarn>$(NoWarn);CS2002</NoWarn>
</PropertyGroup>

方法三:精准控制编译项包含

显式声明Designer.cs的编译属性,明确它是设计时自动生成的文件,避免被重复扫描:

<ItemGroup>
  <Compile Include="Resources\MyResources.Designer.cs" Condition="Exists('Resources\MyResources.Designer.cs')">
    <AutoGen>True</AutoGen>
    <DesignTime>True</DesignTime>
    <DependentUpon>MyResources.restext</DependentUpon>
  </Compile>
</ItemGroup>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:37:17