【发布时间】:2015-06-11 03:59:30
【问题描述】:
我有一个应用程序,我正尝试使用 MSBuild 通过命令行构建。我的应用程序由许多相互依赖的项目组成。我的问题是,是否有办法找到依赖于特定 DLL 的 DLL。此要求是由于以下问题造成的。
假设我的应用程序中有一个项目 BaseProject,它托管一个 Enum.cs 类,用于存储系统范围内使用的所有枚举。还有另一个名为 DependendentProject 的项目,它有一个 DependendentOnEnum.cs 类,它使用 Enum.cs 中的枚举之一。
举例
Enum.cs 有以下枚举
public enum ClassTypeEnum
{
A,
DC,
MP,
FX,
CA,
CD
}
而DependendentOnEnum使用这个枚举根据枚举类型来验证和处理数据
void ValidateAndProcessData(int enumValue)
{
if(enumValue == ClassTypeEnum.FX) //Line3
{
//ProcessData
}
}
现在当 BaseProject 和 DependentProject 的 DLL。上面sn-p中的“ClassTypeEnum.FX”改为3。
如果现在有其他用户出现并将“ClassTypeEnum”更改为类似的内容,那么问题就出现了
public enum ClassTypeEnum
{
A,
DC,
MP,
OI, //Added OI at position 3
FX,
CA,
CD
}
现在我们的补丁构建器在生产机器上所做的是它为已更改的项目构建所有 dll。现在因为这里只有 BaseProject 改变了,只有它的 DLL 被构建。
因此,DependendentProject 的 DLL 现在开始指向 ClassTypeEnum.OI 而不是 ClassTypeEnum.FX。并且整个验证过程都失败了。
我尝试过使用depends.exe,但它只涵盖系统依赖项。我还想要所有那些依赖于 特定 DLL 的 DLL,它不提供。
我知道再次构建整个解决方案是一种解决方案,但这将是一种矫枉过正,因为并非所有项目都定期修改。
那么有没有办法建立这样的依赖结构呢?构建结构的任何工具或一些代码sn-p。
【问题讨论】:
-
为什么不明确地为枚举值分配数值?
-
嗨coffeeMuncher,上述问题是依赖dll引起的众多问题之一,我想要一个更通用和具体的解决方案。
-
根据版本加载DLL怎么样?
标签: c# dll enums msbuild dependencies