【发布时间】:2019-01-18 00:51:24
【问题描述】:
我有一个问题,主要是出于好奇,但也是针对一个宠物项目:
给定一个简单的 C# 解决方案,我最终会在构建后得到一个 A.dll 和一个 B.dll:
Solution
- Project A
- Class A1
- Class A2
- Project B
- Class B1
- Class B2
我很好奇的是:有什么方法可以让 DotNet/Visual Studio/MS Build/whatever 以不同的方式生成 DLL?
朝着正确方向迈出的一步是从单个项目中生成多个 DLL,比如说 A.A1.dll 中只有 A1 类,而 A.A2.dll 中只有 A2 类?
一个更有趣的例子是生成带有 A1 和 B1 的 Lib1.dll 以及带有 A2 和 B2 的 Lib2.dll。
我确实意识到我在现实生活场景中所要求的复杂性远高于给出的简单描述。
我只是好奇这在理论上是否可行(无需数千小时的工作)。如果是这样,我可以尝试什么方法?
【问题讨论】:
-
为什么要这样做?
-
您当然可以创建一个额外的项目文件,使用链接分别包含文件 A1 和 B1。
-
如果您尝试以这种方式拆分和加入类,请使用项目结构。否则,这听起来像是一个 XY 问题。您需要解释实际情况才能获得有意义的帮助。
-
构建自己的构建目标相对简单,我认为当类是独立的时,你的要求(将每个文件编译成单独的 DLL)有点微不足道......现在达到“相对简单”状态需要擅长 MSBuild,这反过来意味着阅读和理解大量可用信息(即阅读几本书)。即使仅此一项对于 SO 来说也可能过于宽泛(现在不太可能完成)......如果您的类实际上相互依赖,那么自动计算依赖关系会更有趣(并且超出 SO 问题的范围)
-
您仍然需要解释“我在现实生活场景中的要求”。由于项目是组织 C# 源文件并编译为程序集的最小单元,因此您上面描述的内容破坏了完整性,并且对我没有任何实际价值。
标签: c# .net visual-studio .net-core roslyn