问题标签 [refix]

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 回答
1480 浏览

.net - 在 .NET 中管理依赖关系树的最佳方法是什么?

在我的上一个项目中,我们使用 MSBuild 作为脚本语言。(是的,真的!)我们还为在 C# 中更有意义的部分编写了数百个自定义 MSBuild 任务。(我什至编写了一个 MSBuild 任务来生成 MSBuild 任务的样板代码。是的,它消耗了自己。)

虽然我不建议其他人采用同样的方法,但我发现非常有用的一件事是内置的依赖管理。如您所料,表达依赖关系并让 MSBuild 负责满足它们很容易。例如,我们软件中的几乎每个步骤都需要将一组特定文件复制到特定位置。你可以很容易地写:

当你执行时Step2,它只会复制一次文件。

构建和满足依赖关系树在软件中很常见。我希望 MSBuild 团队能够使用他们的依赖管理代码,将其与 MSBuild 分离,并将其移至任何人都可以使用的 .NET Framework。除此之外,您认为以这种方式管理依赖关系的最佳选择是什么?

0 投票
4 回答
1750 浏览

c# - 您如何在 .Net 项目中打包外部库?

我的很多项目都包含 Castle/NHibernate/Rhino-Tools 堆栈。令人困惑的是,Castle 依赖于一些 NHibernate 库,NHibernate 依赖于一些 Castle 库,而 Rhino-Tools 依赖于两者。

我已经在我的机器上构建了所​​有三个项目,但是我觉得复制 NHibernate/Castle 库有点多余,因为我使用 NHibernate 和 Castle 构建中的生成库构建了 Rhino-Tools。

现在,我在项目树的 /thirdparty/libs 文件夹中的单独文件夹中包含所有项目。我应该只是在我的项目中使用 /thirdparty/libs/rhino-tools 并从那里使用 Castle/NHibernate 库吗?这在不复制文件方面似乎是合乎逻辑的,但我也喜欢将每个项目放在自己不同的文件夹中。

您对此有何看法?

0 投票
5 回答
4137 浏览

.net - 是否有 .NET 替代 Java 工件存储库(如 Nexus 或 Artifactory)?您在哪里存储版本化的 DLL?

在哪里存储 Team System 上自动构建所需的二进制文件?您是将它们与代码一起存储在 SCM 中还是其他地方?SCM 中的大量二进制文件是否会导致源代码控制出现任何性能问题?

为了修复已发布版本中的错误,需要能够恢复到某些外部库的早期版本,但是这些版本不兼容。分支可以解决问题,但我认为将二进制文件与代码一起存储是反模式的。

欢迎任何建议。

0 投票
3 回答
87 浏览

visual-studio-2008 - 检查所有库和 dll 是否来自同一个版本?

我正在用 VS C++ 2008 开发一个程序。

现在,我有一个巨大的 dll 和 lib 依赖项列表,我正在添加更多。我担心当我需要通过从源代码构建来更新依赖项时(我必须在正确的位置手动替换构建的 dll 和库),如果我不小心忘记替换某些东西,反之亦然,我可能会遇到编译和/或运行时问题。找出哪里出了问题可能有点困难。

那么是否有某种程序或方法可以适合此任务以简化构建具有许多更新依赖项的程序?

0 投票
4 回答
1040 浏览

c# - .NET 程序集引用 101

我在程序集 A 中有以下类。程序集引用了 StructureMap 2.6.1。

我在完全不同的程序集 (B) 中引用程序集 A,并且在调用此行时出现以下运行时错误:

运行时错误是:

FileNotFoundException:无法加载文件或程序集“StructureMap,Version=2.6.1.0,Culture=neutral,PublicKeyToken=e60ad81abae3c223”或其依赖项之一。该系统找不到指定的文件。

我经常不得不将 StructureMap.dll 复制到程序集 B 的 bin 目录中。这非常烦人。关于如何解决这个问题的任何建议?有人知道关于 AssemblyB 何时需要 AssemblyA 引用的程序集的一般规则吗?

谢谢!


感谢您的快速回复!我想过简单地添加 StructureMap 作为参考。然而,我在设计中的目标是从消费者那里抽象出底层实现。换句话说,Assembly B 将不知道 StructureMap 最终被使用的事实。另外,如果我是 GAC StructureMap,那么我会遇到部署问题吗?如果我将站点部署到其全局缓存中没有 StructureMap 的主机上,那么我将回到原点。我很好奇考虑到这个程序集引用问题,如何实现真正的抽象。

0 投票
2 回答
751 浏览

dependencies - 版本控制中多模块源项目的声明性依赖处理

我们有许多由大量模块组成的产品,其中一些模块在一些产品之间共享。它们分布在几个版本控制存储库中。

产品由负责检查所有模块并以正确顺序构建它们的主 Ant 脚本构建。这些模块没有自己的发布周期。

现在,我非常想进行声明式依赖管理,但似乎所有解决方案(Maven、Ivy)都依赖于工件而不是版本控制下的源代码。依赖工件会给我们带来麻烦,所以我宁愿不这样做。我想要像 Ivy 这样的东西,但是我可以说我的产品依赖于模块 foo、bar 和 baz(分支 2.0),它会从一个或多个源代码管理器(在某些配置中指定)检查源代码到平坦的工作空间。

我计划使用 gradle 进行构建,因此非常感谢一个适合的解决方案......

0 投票
2 回答
277 浏览

.net-3.5 - 无法加载类型''来自组装''

我今天决定修改一些代码,遇到了一个对我来说没有任何意义的错误。我有一个名为的接口IDatabase和一个从它继承的类,名为Database. 我最初只是放入IDatabase与 相同的程序集Database,但我不喜欢这样,因为它会阻止另一个人在IDatabase没有整个程序集的情况下创建新类型。我将 IDatabase 移动到一个新的、单独的程序集中,名为LibraryInterfaces,并更改了项目中的所有引用。

该项目编译得很好,但是当我执行它时,我得到了错误:

这对我来说没有任何意义,因为我将IDatabase' 的定义移至LibraryInterfaces! 我仔细检查了正在运行的文件夹中的文件,这些文件是正确的。我什至在 Reflector 中打开了它们,只是为了仔细检查所有的参考资料,这些参考资料也是正确的。我还删除了我的using声明并完全限定了 的所有用法IDatabase,即使这样也没有用!

有没有人有纠正这个问题的提示?