问题标签 [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.
c# - 使用来自另一个 dll 的附属程序集
我有一个 dll,其中包含一些 resx 文件作为本地化的 EmbeddedResources。该 dll 主要用于创建 ASP.NET 网站,并且运行良好。
但是当我在我的测试项目中使用 dll(基本上这只是另一个 dll)时,我无法访问附属程序集的内容,例如我无法访问我的消息的英文翻译。它只返回回退消息。
使用的代码:
baseName 是资源的完全限定名称,例如:myNamespace.MyResourceName。
我在想,当项目是 dll 或网站时,dll 的加载是不同的,但我不知道如何正确加载它。
有人有想法或提示吗?
谢谢。
编辑:我有一些 resx 的 dll A:
- 消息.resx
- Messages.en.resx
- 消息.de.resx
- ETC...
在构建结束时,它会生成一些 dll:
- A.dll
- zh/A.resources.dll
- de/A.resources.dll
- ETC...
如果 dll A 被网站引用,则该网站可以访问本地化资源,例如 en 或 de 中的消息。但是,如果它是另一个 dll,比如我的单元测试 dll,它引用了 dll A,它总是返回的后备消息。
c# - 如何获取当前文化的卫星集会位置?
我的 C#/WF 应用程序使用了一些文件,这些文件因不同的语言而异。这些文件不能作为资源放置在附属程序集中。但是,我希望将它们放在与附属程序集相同的目录中,但我需要知道程序集的实际位置(包括使用嵌入在二进制文件中的默认语言时的情况)。
例如,当应用程序自动切换到波兰语时,我希望检索位置:
D:\<应用程序文件夹>\pl-PL\
有没有办法这样做?请注意,我希望从程序集中检索此信息,而不是通过猜测文件夹位置。
在史蒂夫 B 的帮助下,这里有一个解决方案:
c# - 如何创建多语言网站
我即将开始一个必须支持多种欧洲语言的项目。本网站上的所有静态内容必须可以在这些语言之间进行翻译。我听说过附属程序集,并且听说它们用于 .NET 中的多语言站点,但这是很久以前的事了。这仍然是 .NET 中的当前做法吗?我正在使用 ASP.NET MVC。
asp.net - 访问不同的文化资源文件
我有这种格式的各种语言资源文件:MyApplication\Resources\MyForm\Index.resx
我可以访问当前培养的资源文件。但是,如果我想找到一个不同的文化资源文件(比如,Index.de.resx
),我正在努力寻找一种方法来获得它。
我得到的错误说:
找不到适合指定区域性或中性区域性的任何资源。确保“MyApplication.Resources.MyForm”在编译时被正确嵌入或链接到程序集“BallotApplication”中,或者所有所需的附属程序集都是可加载的并且是完全签名的。
我的资源文件是公开的,构建操作是“嵌入式资源”。
asp.net - 卫星程序集,ASP.NET 语言不变
我正在将一个项目转换为使用卫星程序集。我创建了一个新的类库(名为“资源”)。所有默认资源都位于根级别*.resx
。然后每种文化都有一个文件夹。
"en/" 与 *.en.resx
en-GB/ 与*.en-GB.resx
我将 .resx 文件更改Access Modifier
为“公共”并更改了这些设置。
我确保.resx
设计师*.Designer.cs
使用“资源”命名空间。
我将类库添加到 ASP.NET MVC 应用程序中,并global.asax.cs
根据需要设置文化。
我尝试将al.exe
andResgen.exe
命令添加到 Resources 类库中的构建后事件。
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\Resgen.exe" en-GB/MyResourceFile.en-GB.resx "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin \al.exe" /t:lib /embed:en-GB/MyResourceFile.en-GB.resources /culture:en-gb /out:Resources.resources.dll
查看 MVC 应用程序bin/
文件夹,每种语言都有 3 个文件的文件夹:
MyResources.en-GB.Designer.cs、MyResources.en-GB.resx、Resources.resources.dll
根级别只有Resources.dll
,Resources.resources.dll
但默认语言工作正常。第二个*.resources.dll
是由于构建后事件。
当我更改 CurrentUICulture 时,它不会更改 UI 语言。在将资源移出App_GlobalResources/
外部程序集之前,它运行良好(Razor 示例)。
使用 .NET Reflector查看资源.dlls
是这些差异。
编辑:
在中设置 CurrentCulture 和 UICulture 后global.asax.cs
,我测试了手动检索ResourceManager
实际工作的 a 并以预期语言检索字符串。
我在 MVC 控制器中尝试了相同的测试,但它不起作用。因此,可以检索 ResourceManager 的唯一位置是 Global.asax.cs。
奇怪的是,razor 中 UI 级别的相同测试只会返回默认的文化文本!CultureInfo 是正确的,但 ResourceManager 仅返回 ASP.NET MVC Razor UI 中的默认语言。(这只是为了测试)
TLDR 版本:
从 App_GlobalResources 的资源 (.resx) 转换为附属程序集。
手头的问题。
我可以使用 CurrentUICulture 语言手动调用卫星程序集的 ResourceManagerglobal.asax
并且它按预期工作,但是相同的测试在 UI 端失败并且在 MVC 控制器中失败。
默认语言可以正常使用,那为什么 UI 不切换语言呢?
.net - .NET 可以自动支持父文化的本地化吗?
我有一个已为pt-BR语言环境翻译的 .NET 应用程序,生成了一个附属程序集:
我没有pt-PT语言环境的翻译。我希望在 pt-PT 文化由于共享父文化而处于活动状态时使用 pt-BR 程序集,但事实并非如此。
.NET 能否以某种方式自动使用 pt-PT 文化下的 pt-BR 程序集,还是我需要明确地将我的 pt-BR 翻译放在pt程序集中,直到获得更多 pt 翻译?
nant - Nant and satellite assemblies
Am looking for a Nant sample with satellite assemblies. I googled now for hours without success.
I got this far:
and the csc subelement:
But how do I do create the satellite assemblies? When I try to include non neutral resources I get a strange error (for example ResourceManagement.de.resources:
c# - 多语言页面
在我的项目中,有不同的网页,我的要求是当用户根据用户的语言登录时,页面必须以用户语言显示。
我用谷歌搜索了它,但没有得到正确的解决方案。
我有卫星组件作为解决方案,但如何实施呢?
.net - 在运行时添加附属程序集
我创建了一个可以在运行时切换文化的应用程序。但是现在我想在应用程序继续运行时向我的应用程序添加一个新的卫星程序集。我将特定的文化文件夹(例如af
,其中包含Localisation.resources.dll
文件的文件夹)复制到应用程序文件夹,然后运行以下代码:
但随后什么也没有发生,我一直看到旧文化,但没有显示添加的文化。只有当我停止并启动应用程序时,新的文化才会添加到组合框中。
是否可以在运行时添加卫星程序集?还是我总是必须重新启动应用程序?
c# - ResourceManager 回退到默认资源,而不是从附属程序集读取
我有以下三个项目的文件夹结构:
在 MyClassLibrary1 项目下:
MyClassLibrary1 的项目属性-> Pre-Build,我有以下内容:
在 MyAppExe 项目下的 Program.cs 中:
问题是,由于某种原因,ResourceManager 不断回退到默认资源文件(嵌入在 MyAppExe 中)。请帮助我理解我在这里做错了什么。
无论我尝试什么,我都会得到的输出是“Preschool”而不是“Playgroup”。就好像卫星组件根本没有得到解决。