Blazor Server项目执行dotnet publish --configuration release命令时本地化资源dll缺失问题求助
解决Blazor Server发布时本地化资源dll缺失的问题
我之前也碰到过一模一样的情况——VS构建能正常生成卫星资源dll,但用dotnet publish --configuration release就没了,结合你的配置(资源文件设为“嵌入的资源”+“不复制”),可以试试下面几个办法:
检查项目文件的资源配置
打开你的.csproj文件,看看本地化资源的条目是不是包含了代码生成器的配置。比如App.no.resx应该有类似这样的设置:<EmbeddedResource Update="App.no.resx"> <Generator>ResXFileCodeGenerator</Generator> <LastGenOutput>App.no.Designer.cs</LastGenOutput> <CopyToOutputDirectory>Never</CopyToOutputDirectory> </EmbeddedResource>如果缺少
<Generator>这一行,dotnet CLI不会自动生成对应的强类型资源类,也不会触发卫星程序集的生成——VS里可能帮你默认加上了,但CLI需要明确配置。添加卫星资源语言配置
在项目文件的<PropertyGroup>节点里,加上指定要生成卫星程序集的语言代码:<SatelliteResourceLanguages>no</SatelliteResourceLanguages>这个配置会告诉dotnet publish,需要为挪威语(no)单独生成资源dll,不然CLI可能只会处理默认语言的资源。
清理后重新发布
有时候残留的旧构建文件会影响结果,先执行清理命令:dotnet clean然后再重新发布:
dotnet publish --configuration Release之后去
bin/Release/netX.X/publish目录下的no子文件夹里看看,应该就能找到对应的xxx.resources.dll了。确认资源被代码引用
如果你的代码里没有明确使用本地化资源(比如没用到IStringLocalizer<App>或者强类型资源类),dotnet的发布优化可能会把未使用的资源dll剔除掉。检查一下代码里的本地化逻辑,确保资源被实际引用。
内容的提问来源于stack exchange,提问作者Shanjee
相关产品推荐
相关产品推荐

