为何删除*.Designer.cs文件后项目构建失败?能否将其加入.gitignore?
核心原因
你当前配置使用的PublicResXFileCodeGenerator属于Visual Studio设计时生成器,仅在设计场景下触发运行,触发条件包括:在VS中修改resx文件后保存、右键resx文件选择「运行自定义工具」。该生成器不会被集成到MSBuild的标准构建流程中,因此删除Designer.cs后直接执行构建操作不会自动重新生成该文件,最终导致构建失败。
关于.gitignore规则的疑问
将自动生成的Designer.cs加入.gitignore的思路本身是合理的,只是传统的设计时生成器配置不支持这个使用方式,需要调整csproj配置改用SDK原生的构建时资源生成方案即可实现。
解决方案
方案一:改用构建时自动生成配置(推荐,支持忽略Designer.cs)
删除你现有csproj中贴出的两段EmbeddedResource和Compile配置,替换为以下内容:
<PropertyGroup> <!-- 开启SDK内置的强类型资源类生成功能 --> <GenerateEmbeddedResourcesManifest>True</GenerateEmbeddedResourcesManifest> <EmbeddedResourceUseDependentUponConvention>True</EmbeddedResourceUseDependentUponConvention> <!-- 生成公共访问级别的资源类,和原有PublicResXFileCodeGenerator效果对齐 --> <PublicClassForEmbeddedResource>True</PublicClassForEmbeddedResource> </PropertyGroup> <ItemGroup> <EmbeddedResource Include="Resources\*.resx" /> </ItemGroup>
修改后构建项目时,强类型资源类会自动生成到编译中间目录,不会在项目的Resources目录下生成Designer.cs文件,所有*.Designer.cs都可以加入.gitignore规则,无需提交到代码仓库。
方案二:保留原有设计时生成器配置
如果不修改原有配置,那么ErrorMessages.Designer.cs必须提交到代码仓库,不能加入.gitignore,否则所有克隆仓库的环境都无法正常构建项目。
内容的提问来源于stack exchange,提问作者hasrthur
相关产品推荐
相关产品推荐

