问题标签 [configuration-management]

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 投票
2 回答
691 浏览

delphi - 将配置传递给与应用程序无关的模块的最佳方式是什么?

我正在开发一个由多个模块组成的应用程序,这些模块也将用于其他应用程序。这些模块中的每一个都需要一些配置选项,但不应该知道其他模块的选项,也不应该要求其他模块存在。一些设置在模块之间共享。

假设模块 A 需要设置 x 和 y,模块 B 需要设置 y 和 z。

设置存储在注册表或一个或多个 .ini 文件中。

到目前为止,我已经考虑了以下方法:

  1. 拥有一个包含在所有模块中的全局单元(“global.pas”),并包含带有设置的全局变量。我不太喜欢这种方法,因为它要求所有应用程序都有这样一个单元,并且它必然会收集大量与原始目的无关的附加代码。所以最终每个应用程序都会有自己不兼容的全局单元。
  2. 每个模块都有配置类,其中包含该模块所需的所有设置。这些从应用程序的某个中心点传递到模块,该应用程序还处理读取和写入它们到某种永久形式(例如使用 JvAppStorage)。这需要模块之间进行一些同步,因为某些选项将在它们之间共享,因此如果在一个模块中更改了选项,则此更改必须以某种方式反映在另一个模块的配置中(不一定是实时的,而是下一次模块已初始化)。
  3. 具有传递给每个模块的通用配置类,其中包含所有模块的设置作为属性。每个模块只访问它知道的那些设置。这里的问题可能是名称冲突可能会在不被注意的情况下发生。此外,我不喜欢传递模块不需要的配置选项的想法。此外,每个应用程序都将包含不同的模块子集,但最终会包含相同的配置类以及所有可能模块的选项。(这与上面的全局单位方法没有太大区别。)
  4. 像上面一样,有一个传递给每个模块的通用配置类。但是模块没有属性,而是通过名称访问它们的设置(在最简单的情况下,这可能是 TCustomIniFile)。这避免了所有应用程序中所有模块的设置,但引入了可能的类型兼容性问题,并且名称冲突可能再次成为问题(除非每个模块都为其选项加上其名称的前缀,但它们不能再共享选项)。

我想每个编写模块化系统的人都面临过这个问题,并找到了一些他们后来坚持使用的解决方案,无论他们是否仍然喜欢它们。我也去过那里,几次,仍在寻找金子弹。

也许其他人已经找到了理想的解决方案?

(这是 Delphi 2007 以防万一。我已经在使用 JCL / JVCL。)

0 投票
4 回答
215 浏览

sql-server - 寻找为表中的数据生成 INSERT 语句的应用程序

寻找一个允许我连接到 SQL Server 的应用程序,选择任意数量的表,然后为这些表中包含的数据生成 INSERT 语句。

有人知道这样的应用程序吗?最好是免费软件,但商业版本也可能很有趣。

谢谢,布鲁斯

0 投票
1 回答
395 浏览

configuration-management - AppDomain 和配置部分键入

我在 .Net 2.0 中有一个 Windows 应用程序,它使用多个级别的配置文件。由于我无法控制的原因,该应用程序包含一个 Windows 应用程序 (.exe) 项目和几个 DLL,每个 DLL 都有自己的 app.config 文件。

我已经成功地弄清楚了如何使用(在 C# 中)读取每个 DLL 的配置文件

这工作得很好 - 当指向我的 DLL 配置文件的文件路径名(“foo.dll.config”)时,我可以确认我从这个方法中获得了一个配置对象。但是,当我尝试访问自定义配置部分时,我收到一个异常,指出无法找到我的自定义配置部分的数据类型。

以这种方式加载配置文件时,我还需要做什么才能获得可用于我的代码的键入信息?

0 投票
2 回答
3768 浏览

.net - 如何使用配置在私有文件夹中操作多个程序集版本?

我有一个场景,我需要存储在应用程序私有文件夹中的同一程序集的多个版本,结构如下:

我的问题是 .Net 运行时,当被要求提供旧版本之一时,总是找到最新版本,然后由于内部版本号不匹配而失败,然后再尝试探测更好的匹配。

程序集是强命名的,我在 app.config 中使用此配置:

希望我在这里错过了一些东西。我知道这可以通过监听AppDomain.AssemblyResolve事件在代码中解决,但我希望看到一个纯粹的配置解决方案。

更新:所以我发现了这个错误,正如 Kent 假设的那样,是一个错字。culture="netural"应该是culture="neutral"。也就是说,如果没有错字,当使用codeBase指向每个版本的元素时,解析效果很好。在这种情况下,探测元素似乎不起作用。

0 投票
6 回答
744 浏览

coding-style - 配置管理 - 代码注释中的历史

在问我的问题之前,让我先提供一些背景信息:

我最近加入了一个新的软件开发小组,该小组使用 Rational 工具进行配置管理,包括源代码控制和变更管理系统。除了这些工具之外,团队还有一个标准做法,即在代码中将任何代码更改作为注释记录,例如:

他们对注释标准的官方目的是“注释提供从需求到代码修改的可追溯性”。

我准备提出一个论点,即这种做法是不必要和多余的;团队应该立即摆脱这个标准。

也就是说,变更管理系统是建立从需求到代码修改的可追溯性的地方,源代码控制可以通过在版本之间执行差异来提供详细的变更历史记录。签入源代码时,会注明相应的变更管理票证。解决 CM 票证后,我们会注意修改了哪些源代码文件。我相信这为所需的可追溯性提供了足够的交叉参考。

我想知道是否有人不同意我的论点。我是否错过了更改管理和源代码控制系统无法提供的注释源代码历史记录的一些好处?

0 投票
16 回答
40638 浏览

.net - TFS 与 SVN

我即将开始一个项目(.NET),需要在 TFS 和 SVN 之间做出决定。

我更习惯于 SVN(带乌龟客户端)、CVS 和 VSS。TFS 是否具有 SVN 中可用的所有功能

你们中有人从 SVN 切换到 TFS 并发现它值得吗?
如果我们需要使用 TFS,看起来我们可能需要 Visual Studio。

[编辑]
金钱不是考虑因素,因为我们已经拥有 TFS 的许可证。而且我对 TFS vs SVN 的源代码控制功能更感兴趣,当然也欢迎其他功能列表。

0 投票
3 回答
2342 浏览

c# - GlobalAssemblyInfo.cs 和强命名

我的解决方案的根目录中有一个 GlobalAssemblyInfo.cs 文件,其中有类似以下条目的内容,以启用对输出程序集的强命名。

这种方法有两个缺点。首先,AssemblyKeyFileAttribute 已被弃用,因此为了避免编译警告,我需要您在上面看到的编译指示行。其次,我要么需要将我的所有项目相对于根目录保持相同的深度以使用相对路径,要么使用绝对路径,这决定了其他用户机器(以及持续集成服务器/构建代理)上的结帐位置.

除了在项目文件中通过每个项目设置强命名之外,有没有人有比这更好的解决方案?

0 投票
8 回答
2901 浏览

java - 在同一个 Java 源代码中处理不同的 API 版本

我确定这是一个愚蠢的问题,但是.. 我们有相同的 Java 源文件,我们希望根据我们构建应用程序的客户端使用不同版本的 Java API(jar 文件)。

较新版本的 API 具有我们在 Java 源代码中引用的方法 setAAA() 和 setBBB():

如果使用旧 API 编译而旧 API 没有这些设置器,则此代码将失败。如果我们使用新的 API,是否有任何方法可以条件化此代码以仅编译 setter 行?

谢谢。

0 投票
8 回答
3257 浏览

version-control - 什么是源代码控制和配置管理最佳实践?

我正在考虑一个列表,我可以将其推荐给其他开发人员,例如:

  1. 一个构建脚本,例如makefile,将构建和测试整个项目
  2. 构建系统所需的所有组件都需要源代码控制

有人有这样的清单吗?按优先顺序?


更新 - 添加了一些仅供参考的细节

有问题的系统由 C++ 和 makefile、Java 和导致 WAR 的 ant 以及 powerbuilder 和 C# gui 组件组成。所有代码都是强制的。

所以我正在寻找通用以及特定语言的最佳实践。

0 投票
1 回答
245 浏览

firefox - 在 Firefox 中实现 about:config 等配置设置的最流行方法是什么?

我想实现/使用现有的跨平台配置设置工具,例如about:config在 Firefox 中。它必须在 Windows 和 Mac 上工作。有没有人们推荐的库或设计模式?

另外,如果我要使用一个库,它必须是“像啤酒一样免费”并且不能是 GPL 许可证。apache许可证就可以了。

Windows 端使用 C++/MFC,Mac 端使用 Objective-C。必须在两个平台上读取配置文件,但它们不必共享同一个库。