如何确保在编译时从 *.resx生成 *.Designer.cs?
我一直在跟着这个关于在.NET中进行本地化的教程:https://www.youtube.com/watch?v=EHoO9hG-Uzo&t=3s
与其像Gerald在教程中那样依赖“魔法字符串”(Localizer["KeyName"])不如使用ResourceClassName.KeyName,这样我就能在编译时知道引用的资源是否无效。
如果使用Visual Studio,这一切都没问题,因为保存.resx文件时,它会自动生成或更新相应的.Designer.cs文件;然而没有Visual Studio时它们就不会生成或更新,这可能导致信息过时或编译错误。
我希望确保在构建时就能生成Designer.cs文件,不论使用哪种IDE,这样就能保留来自编译器的额外安全性,而不把自己绑定在Visual Studio上。
解决方案
在此基础上,我改写了下面这段代码片段,可以放入csproj中,自动为所有resx文件生成Designer.cs文件。
<ItemGroup>
<EmbeddedResource Include="Resources/Languages/*.resx">
<Generator>MSBuild:Compile</Generator>
<LastGenOutput>%(Filename).Designer.cs</LastGenOutput>
<StronglyTypedFileName>$(MSBuildProjectDirectory)\Resources\Languages\%(Filename).Designer.cs</StronglyTypedFileName>
<StronglyTypedLanguage>CSharp</StronglyTypedLanguage>
<StronglyTypedNamespace>$(RootNamespace).Resources.Languages</StronglyTypedNamespace>
<StronglyTypedClassName>%(Filename)</StronglyTypedClassName>
</EmbeddedResource>
</ItemGroup>
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。