Visual Studio 项目文件实际上只是 XML,因此理论上您可以将文件加载为XmlDocument
并选择所有Reference
找到的节点。这是我的引用如何存储在示例 VB.net 项目文件中的示例。我想它在 .csproj 文件中并没有太大的不同:
<ItemGroup>
<Reference Include="System.Data.Linq" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Printing">
</ItemGroup>
一旦你能够做到这一点,从Include
属性中的值构建一个引用名称的集合然后验证它是否包含你期望的引用将是非常简单的。
项目具有的任何显式引用也是隐式项目依赖。它们在“解决方案属性”窗口中显示,但不可编辑。
编辑
如果您正在寻找解决方案的项目依赖项,除了您拥有的任何显式引用之外,还手动选择了这些依赖项,您可以在 .sln 文件中找到这些依赖项。
当您在解决方案属性窗口中手动选择项目依赖项时,会在Project的部分内创建一个ProjectSection(ProjectDependencies)部分。
例如,以下是 .sln 文件中的正常项目条目:
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "MyProject",
"Source\MyProject\MyProject.vbproj",
"{AB5BA87B-77D5-4812-B02C-9B4FB87F4EF6}" EndProject
如果您稍后手动添加项目依赖项,该项目将如下所示:
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "MyProject", "MyProject\MyProject.vbproj", "{AC1BE764-AC53-47B0-9608-648C28D3BB79}"
ProjectSection(ProjectDependencies) = postProject
{10F4313B-A586-4CC6-BAFE-51930EC8C68F} = {10F4313B-A586-4CC6-BAFE-51930EC8C68F}
EndProjectSection
EndProject
注意添加的ProjectSection(ProjectDependencies)
不幸的是,与项目文件不同的是,解决方案文件不是 XML。这将使将文件直接解析为文本更加困难。此外,解决方案文件中的项目与 GUID 相关联,以后引用它们的任何部分都使用该 GUID,而不是项目名称。这也使事情变得更加复杂,因为您必须对解决方案文件进行一些预处理以创建 GUID 到项目名称的映射。此时,您将能够从解决方案文件中列出任何明确的项目依赖关系,并比较添加的依赖项是否是您希望添加的依赖项。