假设我们有一个 Windows 窗体 Form1,我们为其设置了一个图标。 Visual Studio 会将图标存储在 Form1.resx ($this.Icon) 中。
现在我们决定将应用程序本地化为 N 种语言,因此我们将 Localizable 设置为 True,我们从语言选项中选择第一种语言,翻译文本,然后继续下一种语言重复该过程(选择另一种语言并翻译) 最多 N 个。结果将是 N 个包含带有原始图标的 $this.Icon 条目的 .resx 文件。
然后我们意识到我们想要更新表单图标,所以我们将语言设置为“(默认)”并设置新图标。令我们惊讶的是,我们发现 N 个 .resx 文件没有更新。
我们是否必须手动更新 N 个 .resx 文件?是否有类似级联更新的东西?在这种情况下,您会怎么做才能避免更新 N 个图标?
我刚刚将代码添加到我的 Program.Main 以修改所有解决方案 .resx 文件以删除 Form.Icon。
try
{
string solutionDirPath = @"path\to\solution";
string[] resxFilePaths = Directory.GetFiles(solutionDirPath, "*.resx", SearchOption.AllDirectories);
foreach (string resxFilePath in resxFilePaths)
{
XDocument xdoc = XDocument.Load(resxFilePath);
var iconElement = xdoc.Root.Elements("data").SingleOrDefault(el => (string)el.Attribute("name") == "$this.Icon");
if (iconElement != null)
{
iconElement.Remove();
xdoc.Save(resxFilePath);
}
}
}
catch (Exception ex)
{
}
finally
{
}
我的箱子大小几乎减少了两倍!
此外,对于所有表单,我将只使用我的应用程序可执行文件中的图标
Icon.ExtractAssociatedIcon(Application.ExecutablePath)
我是一名优秀的程序员,十分优秀!