C++和C#项目的依赖管理

3

我正在努力找出如何管理我们的主要Visual Studio解决方案。在这个解决方案中,我们需要管理C++/CLI项目、C++本地项目、C#项目、由其他团队管理并经常更新的外部依赖项(编译的带有自己依赖项的C#程序集)。

每种类型的项目都可以成为彼此的依赖项(当然除了C#或C++本地项目)。一些C#项目有对外部DLL的依赖关系,这些DLL可能需要一些其他DLL才能正常工作。

到目前为止,我们使用后构建步骤将引用复制到每个项目的输出目录(额外的依赖项用于编译外部C#库和所需的C++ DLL)。我们想要自动化这个过程。项目很多,外部DLL通常由其他团队管理(有时他们会添加越来越多的依赖项),我们希望他们做出的每个更改都可以自动反映在我们的主要项目中。是否有工具、批处理文件的最佳实践或其他方法,可以避免陷入这种依赖性地狱,并只需在每次将新项目包含在解决方案中时进行svn更新和少量配置工作?

我的一个问题是,如果我有一个C#项目1.dll,它需要C#项目1a.dll和C#项目1b.dll,如果我的C#项目2需要项目1.dll,我宁愿不将项目1a.dll和项目1b.dll添加到项目2的引用中,而是希望在我的输出文件夹中找到它(这是因为项目1a由另一个团队管理,并且可能每天需要项目1x.dll才能工作)。

你是如何解决这个要求的?


在VS中有一个选项可以自动链接项目依赖项。我管理着一些相当大的项目,其中包括几个依赖于一堆库(boost、BLAS等)、C++/CLI DLLS和C#项目(共享插件、独立控制台程序、Windows窗体程序)的C++静态库,并且我从未遇到过任何依赖关系管理问题。唯一需要注意的是为(分布式)DLL指定链接器的外部库,而不是静态库。我使用的是VS2005。 - Alexandre C.
2个回答

1

这里有一个 Microsoft Connect 建议,请求类似的功能,(这是我的建议)。不幸的是,引用在解决方案构建配置中更新得不太好。这迫使您在某些情况下(如二进制引用)拆分项目并维护冗余项目/解决方案。

如果您可以从源代码构建所有项目,那么您就没有什么可担心的了,但这是很少见的,正如您在连接建议中看到的,对于某些系统依赖项是不可能的。

这里有一篇博客文章介绍一些重度的构建自定义。


很遗憾,第一个链接已损坏。 - Ilya Serbis

0

你可以尝试使用 NuGet 并托管自己的软件包源


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接