如何消除使用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
相关产品推荐
相关产品推荐

