问题标签 [dependencies]

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 投票
14 回答
5097 浏览

c# - C# .NET 中挥之不去的程序集依赖项

我的 C# 项目——我们称之为 SuperUI——用于使用来自外部程序集的类。现在它没有,但编译器不会让我在没有适当的程序集引用的情况下构建项目。让我详细说明。

该项目用于抛出和捕获一个自定义异常类 - ,SuperException它派生自标准 System.Exception 并存在于一个单独的预编译程序集中,SuperAssembly.DLL我引用了它。

最终,我认为这是一个毫无意义的练习,并SuperExceptions在每种情况下都用 System.SuitableStandardException 替换了所有内容。我删除了对 的引用SuperException.DLL,但现在在尝试编译项目时遇到了以下问题:

“SuperException”类型是在未引用的程序集中定义的。您必须添加对程序集 'SuperException, Version=1.1.0.0 (...)' 的引用

错误引用的源文件似乎不相关;它是在 IDE 中突出显示的项目名称空间。

现在,事情是这样的:

  1. SuperException项目代码中已经消除了 的所有使用。
  2. 与另一个在没有引用的情况下编译良好的项目相比SuperException.DLL,我只引用了一个程序集 - 并且that没有引用我的项目不引用自身的任何内容。虽然这些依赖项中的任何一个都可能抛出SuperExceptions,但我只捕获了基本的 Exception 类,无论如何......另一个项目构建得很好!
  3. 我已经完成了 Visual Studio 的“清洁解决方案”并多次手动清除所有内容。

包括这个参考并不是世界末日,我只是不明白为什么它是必要的。Nrrgg。欢迎任何指点!

0 投票
15 回答
3686 浏览

.net - .NET 框架依赖项

在 .NET 中开发桌面应用程序时,是否可以不需要 .NET Framework?在 .NET 中开发软件是开发桌面应用程序的首选方式吗?软件公司用来开发桌面应用程序的最常用的编程语言是什么?

.NET Framework 的要求是否只是基于您安装的 Windows 操作系统而假设的,因此他们为什么列出 Windows 操作系统版本要求?

0 投票
1 回答
933 浏览

.net-2.0 - 添加 .NET 2.0 SP1 作为部署项目的先决条件

我有一个 .NET 2.0 应用程序,它最近有依赖于 Service Pack 1 的贡献。部署项目已将 .NET 2.0 检测为先决条件,但不是 SP1。如何在我的部署项目中包含 SP1 作为依赖项/先决条件?

0 投票
9 回答
8786 浏览

dependencies - 如何管理 OSGi 构建依赖项?

我们已将 OSGi 运行时 (Equinox) 嵌入到自定义客户端-服务器应用程序中,以促进插件开发,到目前为止一切进展顺利。由于内置的​​清单编辑器、依赖管理和导出向导,我们一直在使用 Eclipse 构建插件。使用 Eclipse 来管理构建对于通过 Hudson 进行持续集成不是很有利。

我们有依赖于其他 OSGi 包的 OSGi 包。我真的很讨厌在自定义 ANT 构建中对构建顺序进行硬编码。我们已经这样做了,这已经是过去了,而且非常可怕。是否有任何构建工具可以轻松管理 OSGi 依赖项,如果不能自动解决它们?是否有任何体面的例子说明如何做到这一点?

澄清:

生成的构建脚本只能通过 Eclipse 使用。它们需要手动运行 Eclipse 的各个部分。我们还有一些 Eclipse 构建没有的标准目标,我不想修改生成的文件,因为我可能会重新生成(我知道我可以做包含,但我想避免所有 Eclipse 生成文件一起)

这是我的项目布局:

在使用 Eclipse PDE 时,每个插件都有一个 Manifest,但没有 build.xml,因为 PDE 会为我这样做。很难用 Hudson 自动化一个 gui 驱动的过程。我想设置我自己的 build.xml 来构建每个,但是存在依赖项和构建顺序问题。这些问题是由 Manifest 文件(描述 OSGi 导入)驱动的。例如,PluginC 依赖于 PluginB,而 PluginB 又依赖于 PluginA。它们必须以正确的顺序构建。我意识到我可以手动控制构建顺序,我正在寻找一种工具来帮助自动化构建顺序依赖管理。

0 投票
12 回答
640713 浏览

java - 如何告诉 Maven 使用最新版本的依赖项?

在 Maven 中,依赖项通常是这样设置的:

现在,如果您正在使用频繁发布的库,那么不断更新 <version> 标记可能会有些烦人。有什么方法可以告诉 Maven 始终使用最新的可用版本(来自存储库)?

0 投票
3 回答
914 浏览

.net - 获取应用程序所需的程序集列表

有没有办法将 .net 项目的所有必需程序集(不包括 .net 框架)放入准备打包到nsis作为安装文件的文件夹中?

我尝试编写一个小型控制台应用程序,该应用程序使用反射来获取 dll 列表,但一直坚持寻找一种确定 dll 是否来自 .net 框架的万无一失的方法。

答案可能是 Visual Studio 中的一个简单开关以输出所有依赖项,或者可以执行此操作的独立应用程序,或者 Nsis 的插件,或者我错过的一些关于反射的信息。

0 投票
9 回答
34910 浏览

java - Java包循环检测:如何找到涉及的具体类?

你会推荐什么工具来检测Java 包循环依赖,知道目标是明确列出检测到的“跨包循环”中涉及的特定类

我知道classycleJDepend,但它们都没有列出循环包依赖项中涉及的类。Metrics有一个有趣的循环图形表示,但它再次仅限于包,有时很难阅读。

我厌倦了得到一个:

“你在这 3 个包之间有一个包循环依赖关系
,每个包都有 xxx 类,
祝你好运找到正确的类并打破这个循环”

您是否知道任何工具会采取额外步骤来实际向您解释为什么检测到循环(即“列出所涉及的类”)?


Riiight...是时候宣布结果了:

@l7010.de:感谢您的努力。我会投票给你(当我有足够的代表时),特别是对于'CAP'的答案......但是CAP已经死在水中并且不再与我的Eclipse 3.4兼容。其余的都是商业的,我只寻找免费软件。

@daniel6651:谢谢,但如前所述,仅限免费软件(很抱歉一开始没有提到它)。

@izb 作为 findbugs 的频繁用户(现在使用最新的 1.3.5),我只需单击一下就可以接受您的答案...如果您能向我解释有什么选项可以激活 findbug 以检测任何周期。该功能仅在0.8.7 版本中提及(查找“新样式检测器以查找类之间的循环依赖关系”),我无法对其进行测试。更新:它现在可以工作了,我有一个旧的 findbugs 配置文件,其中没有激活该选项。不过我还是喜欢CAD ;)

答案是......在下面看到我自己的(第二个)答案

0 投票
2 回答
595 浏览

dependencies - 如何使用一个 Makefile 有效地构建组件的不同版本

我希望我没有把自己画到角落里。我已经通过实现 Makefile 获得了似乎大部分的方法,但我无法让最后一点工作。我希望这里有人可以提出一种技术来做我想做的事情。

我在源存储库的版本控制文件中有我称之为“材料清单”的东西,我构建了类似的东西:

我希望我的 Makefile 使用 $(VER) 作为标签来从存储库中检索 BOM,生成要包含在 Makefile 中的依赖文件,重新扫描包含该依赖项,然后构建产品。

更一般地说,我的 Makefile 可能有几个目标——A、B、C 等——我可以构建每个目标的不同版本,所以我可以这样做:

依赖文件包含所有三个目标的信息。

但是,创建依赖文件有点昂贵,所以如果我这样做:

我真的很希望 Makefile 不重新生成依赖项。为了使事情尽可能复杂,我可能会这样做:

所以我需要重新生成对第二个构建的依赖。

签出弄乱了用于重新生成依赖项的时间戳,所以我认为我需要一种方法让依赖项文件不依赖于 BOM,而是依赖于 BOM 更改的某些指示。

我所做的是让 BOM 签出发生在 .PHONY 目标中(因此它总是被签出)并跟踪“.sig”文件中最后一次签出的内容(如果签名文件丢失或内容与新文件的签名不同,然后 BOM 更改),并且依赖项生成取决于签名)。在我的 Makefile 顶部,我有一些设置:

看来我总是需要做:

但是,如上所述,如果我这样做,然后继续:

然后每次我调用 make 时都会更新依赖项。所以我尝试:

但是当签名改变时,依赖生成不会被触发。我认为这是因为 $(SIGS) 不是目标,所以 make 不会注意到 $(BOMS) 规则何时更新签名。

我尝试创建一个 .sig:.bom 规则并通过触摸管理签出 BOM 的时间戳,但这不起作用。

有人提出了类似的建议:

但是当 SIG 是从 BOM 创建时,BOM 如何依赖于 SIG?正如我读到的那样,“从 BOM 创建 SIG,如果 SIG 比 BOM 更新,则检查 BOM”。我如何引导该过程?第一个 BOM 来自哪里?

0 投票
20 回答
38213 浏览

c++ - 我应该如何检测大型 C++ 项目中不必要的#include 文件?

我正在 Visual Studio 2008 中处理一个大型 C++ 项目,并且有很多包含不必要#include指令的文件。有时#includes 只是工件,删除它们后一切都可以正常编译,而在其他情况下,可以向前声明类,并且可以将 #include 移动到.cpp文件中。有没有什么好的工具可以检测这两种情况?

0 投票
4 回答
941 浏览

java - 找到最小必要的 java 类路径

是否有检测不需要的 jar 文件的工具?

例如,假设我有 myapp.jar,我可以使用包含 hibernate.jar、junit.jar 和 easymock.jar 的类路径来启动它。但实际上它只使用 hibernate.jar 就可以正常工作,因为调用 junit.jar 的代码不可访问。

我意识到反射可能会使事情复杂化,但我可以使用忽略反射的工具。除此之外,这似乎是一个相对简单的问题。

如果没有这样的工具,确定需要哪些依赖项的最佳实践是什么?在我看来,这一定是一个普遍的问题。