我有一个包含多个项目文件和多个解决方案文件的软件项目。解决方案文件与项目文件的一对多的关系,以及一个给定的项目文件可能出现在多个不同的解决方案的文件。

有没有什么好/漂亮的方式拿出地图解决方案文件和项目文件之间的关系的?无论是通过VS或某种类型的工具。

我想什么做的是说“哎,这个目录及其子目录中有许多的解决方案文件和项目文件 - 请告诉我该解决方案使用的项目并将其映射出我。”

予实现的净效应可以通过打开每个解决方案文件并检查它,但我正在寻找一个自动化的,可重复的动作而产生。

编辑:恐怕我也有解决方案/项目连击追溯到VS2003,所以我需要这些映射,以及

有帮助吗?

解决方案

这两个项目文件和解决方案文件是文本文件。项目文件不知道他们的解决方案,所以我们必须为他们的项目解决方案的样子。

在解决方案文件的一个项目条目看起来像这样:

Project("{9AC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ProjectName", "ProjectDirectory\ProjectFileName.vcproj","{9A95F635-B74F-4640-BBCF-E324D0972CA9}"
EndProject

所以你可以看到,我们可以抢项目名称和项目文件中的相对路径。

使用您喜欢的脚本语言,你可以不喜欢以下。 (实施例在红宝石)

require 'find'

def project_name(string)
  string =~ /= "(.+?)"/
  $1
end

#the script doesn't use this method but you may want it
def project_path(string)
  string =~ /, "(.+?)"/
  $1
end

def find_projects(path)
  puts "#{path} contains the following projects:"
  open(path).read.gsub(/Project\(.+?EndProject/m) do |match|
    puts project_name(match)
  end
  puts ""
end

#change File.dirname(__FILE__)) to the name of the directory you want to search.
Find.find(File.dirname(__FILE__)) do |path|
  if FileTest.directory?(path)
    if File.basename(path) =~ /^\../ # Directory name starts with .
      Find.prune       # Don't look any further into this directory.
    else
      next
    end
  elsif path =~ /\.sln$/
    find_projects(path)
  end
end

其他提示

除了戈登·威尔逊的帖子,你可以尝试建立同样的事情,在C#中,并使用 QuickGraph GraphViz的来创建示出了同样的事情的图。

QuickGraph可用于在存储器中创建并输出点文件中的图形结构,该结构的Graphviz可以加载和创建从一个很好看的图。在这两个网站的文档给你提供足够的信息去了。

** **编辑 请参见这里对小方的项目,我开始,做一些你想要的东西。在几个小时内最多你也许可以添加任何你需要的。随意把它和使用,无论你想要,就留下我一个评论,如果你这样做吧。

一个简单的Python(perl的?)脚本与一对夫妇的好地方正则表达式。结果 每个项目都有它自己的GUID。找到映射只是一个寻找项目的GUIDS和解决方案文件查找它们的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top