如何在dotnet build构建过程中从resx文件生成.Designer.cs文件?
实现dotnet build自动生成.Designer.cs并排除源码控制
要让.Designer.cs文件在dotnet build过程中自动生成,同时不用提交到源码控制,按以下步骤操作:
1. 修改项目文件(.csproj)配置
核心是告诉MSBuild在构建阶段而非仅IDE设计阶段生成Designer文件,分WinForms和WPF两种情况调整:
WinForms项目
在.csproj中添加或更新以下配置:
<ItemGroup> <!-- 配置Designer文件由对应窗体类触发生成 --> <Compile Update="**\*.Designer.cs"> <AutoGen>True</AutoGen> <!-- 关闭仅设计时生成,让构建流程触发 --> <DesignTime>False</DesignTime> <DependentUpon>%(Filename.Replace(".Designer", ""))</DependentUpon> </Compile> <!-- 关联resx文件,确保资源文件的生成逻辑同步 --> <EmbeddedResource Update="**\*.resx"> <AutoGen>True</AutoGen> <DesignTime>False</DesignTime> <DependentUpon>%(Filename.Replace(".resx", ""))</DependentUpon> </EmbeddedResource> </ItemGroup>
WPF项目
针对XAML对应的Designer文件,修改.csproj如下:
<ItemGroup> <Compile Update="**\*.Designer.cs"> <AutoGen>True</AutoGen> <DesignTime>False</DesignTime> <DependentUpon>%(Filename.Replace(".Designer", ""))</DependentUpon> </Compile> <!-- 关联XAML文件,确保布局文件的生成逻辑触发 --> <Page Update="**\*.xaml"> <AutoGen>True</AutoGen> <DesignTime>False</DesignTime> <SubType>Designer</SubType> </Page> </ItemGroup>
2. 配置源码控制忽略规则
把自动生成的.Designer.cs排除在源码控制外:
- Git:在项目根目录的
.gitignore中添加一行:**/*.Designer.cs - SVN:在
svn:ignore属性中添加*.Designer.cs(可通过IDE或svn propset命令设置)
3. 验证构建流程
- 删除项目中已有的所有
.Designer.cs文件 - 执行命令:
dotnet build - 检查项目目录或输出目录,确认对应的
.Designer.cs文件已自动生成 - 打开VS/Rider,IDE会识别自动生成规则,不会因文件缺失报错
内容的提问来源于stack exchange,提问作者aksu
相关产品推荐
相关产品推荐

