问题标签 [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 回答
532 浏览

visual-studio-2010 - MSBuild 为错误的框架版本创建附属程序集

我有一个 VS2010 解决方案,它为 .NET 2.0 创建了几个程序集。

这也包括附属程序集。

当我用 VS2010 创建一切时,一切都很好。但是我有一台 XP 机器使用 MSBuild 作为构建服务器。从那里创建的附属程序集无法识别。查看 ILDASM,我看到 VS2010 创建元数据版本 2,而 MSBuild 创建版本 4。我猜这意味着 VS2010 创建正确的 .NET2 版本,而 MSBuild 仅创建 .NET2 的主要程序集,但附属程序集是 .NET4。

我已经从这里知道了这个话题:什么决定了附属程序集的目标框架版本?

但这对我不起作用。

有什么想法可以让构建服务器创建 .NET2 附属程序集吗?如果我知道如何正确调用 AL.exe,我也许可以增强我的脚本。

0 投票
1 回答
114 浏览

c# - 卫星组装 - 优点和缺点

我计划将我的解决方案的非可执行文件存储在卫星程序集中。原因是可以轻松共享,只有应用程序可以看到和使用它。但我不确定它的缺点。需要那些有使用卫星组装经验的人的反馈。仅供参考...我将存储图像、文本和 MS Access 文件。

0 投票
1 回答
258 浏览

asp.net - 使用附属程序集编译期间未创建文化文件夹

我正在研究卫星组装。将来我们需要使用资源“DLL”而不是所有文化的 .Resx 文件。一切都很好,但是当我使用批处理编译项目时,很少在 obj\debug 中创建文化文件夹。请参阅下面仅创建 fr-FR 和 gu-IN 文件夹的位置。为什么不创建 pa_IN 文件夹?我不明白为什么会出现这个问题。请指导或建议我,我应该怎么做?我需要改进代码或需要额外的设置?下面是我的编译代码:

0 投票
3 回答
2636 浏览

c# - C# 控制台应用程序的本地化支持

我创建了一个简单的控制台应用程序来显示“Hello World”字符串。后来我带了资源文件来支持不同的语言,把“Hello World”的翻译版本放上去。我尝试在中文操作系统中运行 console.exe,并希望看到“Hello World”以中文显示。不幸的是它显示的是英文。

经过分析,发现添加 .resx 文件会在项目中创建一个单独的文件夹,其中包含每种语言(卫星程序集)的 .resource dll。因此,如果我将 .exe 与其他文件夹一起放置并运行,则“Hello World”会以中文显示。如果我删除文件夹(.resource)然后只运行.exe,那么它会再次以英文显示“Hello World”。

有没有办法创建一个将所有资源文件映射在一起的 .exe。这样我就不需要在运行 .exe 之前将文件夹与 .exe 一起放置。

顺便说一句,我正在尝试使用 Strings.STRING_NAME 访问字符串,其中“Strings”是默认资源文件的名称。其他语言的字符串文件的类型为 Strings.fr.resx、Strings.de.resx。

请在这方面提供帮助。

提前致谢。

0 投票
1 回答
602 浏览

localization - NuGet 卫星包未添加到主包的 lib

我正在尝试为另一个包的本地化创建一个 nuget 包,并且我正在遵循卫星包方法

我很确定严格遵守这些规则以及命名约定,但是当我从我的 nuget 存储库服务器下载卫星包时,它没有在主目录的 /lib/ 文件夹下添加预期的 /it/ 文件夹包裹。

主要文件结构如下

/lib/net45/myfile.dll

和卫星包有

/lib/net45/it/myfile.resources.dll

我尝试了所有方法,并使用AspNet.Mvc.5.1.1包及其附属包仔细检查了我的包配置。他们是一样的...

我想知道问题是否可能出在 NuGet 服务器上(但对我来说听起来很奇怪)?

服务器版本为 v2.8.50126.400

更新 所以它似乎真的是服务器,好像我使用本地路径(C:...)作为 repo 源,包按预期运行。

无论如何,我刚刚使用 NuGet.Server 包来创建服务器,我错过了一些特定的配置吗?

0 投票
1 回答
98 浏览

.net - 部署后自定义资源

我正在尝试开发一个实用程序,该实用程序将允许在我们的产品部署后自定义字符串。卫星组件似乎是一个很好的方法。我在使用Microsoft.VisualBasic.VBCodeProviderMicrosoft.CSharp.CSharpCodeProvider作为可以在运行时编译和加载代码的过程的一部分方面拥有丰富的经验。但是,附属程序集似乎并不涉及完整的编译过程。当我在网上浏览有关构建附属程序集的信息时,您似乎需要跳过代码编译步骤,只需使用链接步骤 ( AL.exe) 将编译.resources文件链接到附属 DLL。

我已经.resources使用 生成已编译的文件System.Resources.ResourceWriter,但我现在正在寻找一种优雅的方式来调用AL.exe将从中创建 DLL 的功能。当然,我可以简单地调用System.Diagnostics.Process.Starton AL.EXE,但这似乎不太优雅,因为 .NET 框架具有用于构建.resources文件和编译 VB.NET 和 C# 源代码的内置类。

至少我需要一种获得适当AL.EXE可执行文件的路径的好方法,但最好只有一个可以完成链接的 .NET 类。

0 投票
1 回答
60 浏览

translate - 如何在不重新编译的情况下翻译卫星程序集?

我正在开发一个使用附属程序集支持多种语言的企业应用程序,我们希望为客户提供在部署后添加新语言的能力。

是否可以强制应用程序生成 .resources 文件而不是附属程序集?或者可能是一种从附属程序集中提取资源文件的方法?

客户是否可以使用另一种方法来翻译附属程序集而无需重新编译?

0 投票
2 回答
1217 浏览

c# - MSBuild 从输出中排除附属程序集

是否可以告诉 MSBuild 不要为某个程序集或所有程序集复制附属程序集?

我有一个 nuget 包,其中包含资源程序集,但我不想将它们包含在我的输出中。

谢谢。

0 投票
1 回答
505 浏览

.net-assembly - 如何在 .NET MVC 站点中为多个语言环境嵌入和从 Satellite Assembly 获取资源

第 1 步:好的,我知道我已经阅读了网上关于这个的每一页,所以我终于崩溃了,最终来到了 SOF。

这是我的资源文件代码:

很明显,现在我创建了我的 errors.resources 文件,其中包含名为 String1 的字符串资源,其中包含“en-US”的值。

第 2 步:然后,我只需使用以下命令创建我的卫星程序集:

好吧……太酷了。

第 3 步:所以现在在我的项目中:

但无论我做什么......我都无法访问程序集中的字符串资源。我可以在项目中包含我的 errors.resources 文件并以这种方式获取它,但我需要它在这个程序集中,这样我也可以将此程序集用于另一个项目!

有人可以告诉我我在第 3 步可能做错了什么吗?或者我在前面的步骤中做错了什么?

0 投票
1 回答
584 浏览

c# - 尝试构建包含所有附属资源程序集的 WinForms 应用程序

我正在使用 VS 2013 构建作为单个 EXE 文件发布的 C# WinForms 应用程序。到目前为止,使用 ilmerge 作为构建后步骤以包含所有需要的 DLL 没有问题。甚至 ActiveX 组件也可以毫无问题地嵌入。

但是现在,我要使应用程序国际化,从而生成本地化的卫星资源程序集。我目前的解决方案如下:

  1. Build 在(例如)下生成 DLL .....\en\MyApp.resources.dll
  2. 生成后操作将此 DLL 复制到..\..\Resources\i18n\en

下次执行 Build 时,它将资源文件夹下的资源i18n\en作为 Embedded Resource 嵌入到目标中。在我的应用程序中,我使用自己ResolveEventHandlerAppDomain.CurrentDomain.AssemblyResolve事件,从应用程序的内部资源中读取请求的 DLL。

这工作正常,但是:在提交涉及本地化 DLL 的更改后,我必须构建解决方案两次才能将新 DLL 放入输出 EXE。

使用ilmergefor 包含附属程序集没有成功,因为它解压缩 DLL 并将其中包含的对象直接放入 EXE 文件中。

所以,我的问题是我是否可以修改 .csproj 文件,以便在生成 DLL 之后,我可以在将资源打包到输出二进制文件之前将其复制到资源目录中,而不是在第一次构建之后复制。这样一来,只需要一次构建过程,就可以避免错误。