问题标签 [satellite-assembly]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
647 浏览

c# - 如何将语言资源放在单独的项目中以生成附属程序集

我一直在使用http://www.codeproject.com/Articles/30035/Simple-WPF-Localization项目来本地化应用程序,因为(嗯)它简单直接并且支持动态语言更改。

我把所有的语言资源都放在了主项目中(即resources.resx,resources.ja-JP.resx)。这样,附属程序集就会自动生成并放入正确的文件夹结构中。

但是,我想将所有语言资源(除了默认/中性资源-resources.resx)放在一个单独的项目中。这样,如果我只需要更改其中一个翻译中的某些内容,我就不需要重建主项目(具有应用程序源)。

所以,我想知道是否有一种标准的方式(或者至少是一种非常直接的方式)来创建一个只包含语言资源的 VS 项目。

我已经尝试创建一个空项目并将输出设置为类库和程序集以匹配我的可执行文件的名称。它确实在正确的文件夹中创建了正确的附属程序集,但它也生成了一个 dll。如果 c# 或 wpf 的项目类型完全是语言资源,那将非常简单,但我似乎找不到任何关于它的参考资料。

(顺便说一句,我在 WPF 项目中使用 VS 2010)

谢谢你的帮助!

0 投票
1 回答
468 浏览

visual-studio-2013 - 为什么VS2013不生成卫星程序集?

虽然我团队的其他成员都在使用 VS2012,但我是团队中第一个切换到 VS2013 的成员。我注意到的第一个主要区别是,对于同一个项目/解决方案,VS2012 正在为我的 RESX 本地化文件生成附属程序集,但 VS2013 不是。所有资源都嵌入到主程序集中。

如何让 VS2013 自动生成附属程序集?

更新:这是构建日志的一个有趣部分:

似乎没有正确检测到文化。在 VS2012 构建日志中,它是。

0 投票
1 回答
972 浏览

visual-studio-2010 - WiX:如何自动包含本地化的卫星程序集?

可以将 WiX 设置为自动包含所有生成的卫星程序集吗?

目标是拥有一个单一的英语 MSI,它可以安装一个应用程序,该应用程序具有可用于约 10 种语言的本地化字符串。

我发现了这个现有的问题:

如何在使用 WiX 构建的 MSI 中包含卫星组件(本地化资源)?

然而,该解决方案建议需要为每个文化变体手动添加新的组件和目录定义。

这是唯一的方法,还是 WiX 可以以某种方式自动从 Visual Studio 项目定义中学习每种语言?

(运行 VS2010 和 WiX 3.8)

0 投票
1 回答
284 浏览

c# - 从内存中加载附属程序集

附属程序集必须存在于磁盘上适当命名的子文件夹中。它们是否可以从内存中加载,例如,通过 AppDomain.AssemblyResolve 事件?

我知道程序集可以从内存中加载,但是 .Net 在查找附属程序集时会使用 AssemblyResolve 事件。

0 投票
0 回答
100 浏览

.net - 通过许多项目的卫星组件本地化的可扩展性

我正在开发一个 .Net 软件产品,该产品由各种大小的多个应用程序和数十个(可能数百个)程序集组成。一切都必须翻译成多种语言。

无论我在哪里看,在 .NET 中本地化字符串的建议方法是使用资源字符串创建附属程序集。当然,所有这些示例都只是展示了一个程序集,以及如何在技术上使本地化工作。我的问题是,在实践中我看不出这应该如何扩展到大量的程序集

如果我只是为每个程序集复制该方法,我最终会得到大量的附属程序集来维护和部署,并且我必须在每个需要它的程序集中跟踪一个相同的字符串/翻译。每次翻译发生变化时,我都必须在我的所有程序集中找到该字符串的所有用途,并对其进行修改。

每次我需要更新我的翻译时,我都需要从大量资源文件中提取所有内容,将其发送给翻译人员,然后将他们的结果再次传播到正确的资源中。这当然可以完成,我假设其中一些可以(并且必须)编写脚本。然而,它并没有让我觉得特别顺利和高效。

我能想到的一种替代方法是创建一个专用的翻译程序集(带有附属程序集),作为本地化字符串的中央存储库。所有程序集的所有字符串的所有翻译都会到那里,并且每个程序集都会依次引用它以吐出翻译。

这似乎使维护变得更加容易,但是当然,这个具有大量资源字符串的中央程序集必须与我的最小应用程序一起部署,而实际上只需要其中的一小部分。此外,许多开发人员必须经常更改此组件,这将导致冲突的高风险。

我的问题是:
通过卫星程序集进行本地化的方法应该如何扩展到具有许多程序集的大型软件项目?建议的策略和最佳实践是什么?

0 投票
1 回答
1063 浏览

c# - 如何防止为嵌入式资源生成资源程序集

我有一个项目,其中嵌入了一些文件,其中两个以.SMS.something. 编译项目时,即使我没有指定要使用附属程序集的任何地方,也会生成“SMS”文化的附属程序集,它甚至是一种文化吗?

我到处寻找解释,但我不知所措。我发现的唯一事情是人们试图将他们的实际文化资源程序集嵌入到他们的可执行文件中,但这不是我的情况。我只想将我所有的嵌入式资源(仅使用一种语言)放在同一个程序集中。

如何防止自动生成附属程序集,或指定 SMS 不是一种文化?

0 投票
1 回答
82 浏览

c# - 本地化:无延迟/闪烁地渲染表单上的控件文本

我正在开发一个我想支持本地化的应用程序。我已经实现了卫星程序集概念来实现本地化,但问题是它将根据所选语言在运行时加载/渲染所有控件的文本,这使得我的应用程序加载非常缓慢。

现在我的问题是:有没有更好的方法可以让我在加载时更新我的​​所有主窗体控件而不会延迟/闪烁。

我正在使用 c#.net Winforms 开发应用程序。

我的项目结构:

在此处输入图像描述

这是我尝试过的[示例代码]:

注意:这很好用,因为这个示例应用程序只包含很少的控件,但我的实际应用程序包含太多控件,这些控件在加载时肯定会延迟/闪烁。

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
710 浏览

c# - 卫星资源 .dll 编译为错误的 .net 框架?

下面的程序应该从卫星资源文件中获取资源字符串。使用 VS2015 使用 target framework='NET Framework 4.5.2' 编译时,它工作正常。但是,设置 target framework='NET Framework 3.5' 使其无法找到卫星资源文件并回退到默认资源。

我查看了 .exe 和附属 .dll 文件,发现它们被编译为不同的 .net 版本(尽管生成它们的编译相同):

看起来卫星 dll 获取了错误的 .Net 版本。有没有人经历过这种情况并且有解决方案吗?(除了将项目升级到最新的 .Net 版本)

编辑:接缝好像我的开发环境更新不好。重新安装整台计算机有帮助,但简单地重新安装 .Net 和 Visual Studio 并没有!(我想知道注册表数据库中是否有一些东西不能通过简单的重新安装来重置)

0 投票
1 回答
119 浏览

c# - Enumerate the languages supported by satellite assemblies

Here is the line of code which help to find assembly for required culture:

But how to find languages for which satellite assemblies exist for application, lets say if there are 3 language support for which 3 different folder created, now I want those folders and languages supported in it. I use this in drop down from where user can select language and drop down values should be dynamically loaded as per supported satellite assemblies.

0 投票
1 回答
257 浏览

tfs - 如何将我自己的文化资源添加到 tfs 网络访问


如何将我自己的文化添加到 Team Foundation Server Web 应用程序,以便将我的语言用于 Web 访问 UI?(将我的语言添加到配置文件区域设置中的语言组合框。)

我的个人资料-->语言环境

我尝试通过使用十六进制编辑器更改“C:\Program Files\Microsoft Team Foundation Server 14.0\Application Tier\Web Services\bin\de”文件夹下的资源文件来修改德语,但新的 dll 不起作用。
我还使用 Visual Studio 创建了一个新的资源 dll,并使用具有不同值的相同资源名称,具有相同的文件版本和 .net 版本。但是当我替换资源 dll(例如 Microsoft.TeamFoundation.Server.WebAccess.Welcome.resources.dll)时,ui 会加载默认语言并忽略我的新 dll。
如下图所示,它没有显示我的新翻译文本,即使它没有显示选定的语言(德语),它显示的是默认语言(英语)。
我错过了什么?

在 Visual Studio 中编辑资源 tfs Web 访问中的结果