首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.net中获取项目的项目依赖项

在.net中获取项目的项目依赖项
EN

Stack Overflow用户
提问于 2012-09-06 00:42:33
回答 2查看 3K关注 0票数 1

我想检查项目的依赖关系(右键单击项目并单击“项目依赖关系”)是否以编程方式正确添加。我该怎么做呢?

准确地说,

Qn- part 1)如何访问解决方案中项目的“依赖项”(而不是引用)?

Qn-第2部分)如何(而不是在哪里,如csproj/sln...)我是否应该检查项目的所有依赖项是否都已按需添加?

我尝试在csproj和sln文件中翻找。我看不到一个属性/项目组,它在解析时会给我一个添加的依赖项列表。

为此,我应该使用EnvDTE吗?我已经将Microsoft.Build.Evaluation类用于我正在执行的大量其他构建操作。我不知道这是否会使过程变得更加复杂。

请给我建议。谢谢!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-10 22:43:16

This做了我想做的事。我已经解析了sln文件并提取了项目的GUID。

票数 0
EN

Stack Overflow用户

发布于 2012-09-06 00:51:26

Visual Studio项目文件实际上就是XML,所以从理论上讲,您可以将文件作为XmlDocument加载,并选择您找到的所有Reference节点。这是一个如何将我的引用存储在示例VB.net项目文件中的示例。我想这在.csproj文件中没有太大的不同:

代码语言:javascript
复制
  <ItemGroup>
    <Reference Include="System.Data.Linq" />
    <Reference Include="System.Deployment" />
    <Reference Include="System.Drawing" />
    <Reference Include="System.Printing">
  </ItemGroup>

一旦能够做到这一点,就很容易从Include属性中的值构建一个引用名称集合,然后验证它是否包含您所期望的引用。

项目所具有的任何显式引用也都是隐含的项目依赖。它们将显示在解决方案属性窗口中,但不可编辑。

编辑

如果您正在寻找解决方案的项目依赖项,这些依赖项是在您拥有的任何显式引用之外手动选择的,您可以在.sln文件中找到这些依赖项。

当您在“项目解决方案属性”窗口中手动选择一个项目依赖项时,将在的节中创建一个ProjectSection(ProjectDependencies)节。

例如,以下是.sln文件中的普通项目条目:

代码语言:javascript
复制
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "MyProject",
"Source\MyProject\MyProject.vbproj",
"{AB5BA87B-77D5-4812-B02C-9B4FB87F4EF6}" EndProject

如果您稍后手动添加项目依赖项,则该项目将如下所示:

代码语言:javascript
复制
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到项目名称的映射。此时,您将能够列出解决方案文件中的任何显式项目依赖项,并比较已添加的依赖项是否为您期望添加的依赖项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12286076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档