2012-07-24 357 views
4

在Visual Studio中,用于在WinForms项目中添加元素的上下文菜单命令与为WPF项目显示的元素不同。实际上,我可以在第一个和第二个“Add-> Window”中看到“Add-> Windows Form”。 VisualStudio通过哪些参数/配置可以区分当前打开哪种类型的项目?我的第一个赌注是.csproj文件,但我没有看到关于项目类型的独特之处。visualstudio如何知道当前项目的类型?

回答

4

项目文件中经常会有一个ProjectTypeGuids元素,它允许Visual Studio确定它是什么项目类型。在解决方案文件中也提到了该项目。

<ProjectTypeGuids>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 

作为一个例子。

这里是一个有些旧的链接项目GUID的列表,但多数仍然有效:http://onlinecoder.blogspot.se/2009/09/visual-studio-projects-project-type.html

而且这里有一个博客帖子,列出它的所有有关:

http://www.dzimchuk.net/blog/post/ProjectTypeGuids-node-in-VS-project-files.aspx

“在一个普通的类库项目中,'ProjectTypeGuids'节点根本没有,没有多久就找到那些神秘的GUID:List of known project type Guids。所以第一个说它是一个WPF项目,第二个说它是个C#项目“。

1

它实际上是.sln文件中标识项目类型的GUID。

Project("{PROJECT-TYPE-GUID}") = "OurSolution.Tests.Integration", "OurSolution.Tests.Integration\OurSolution.Tests.Integration.csproj", "{04A96D9A-FF90-4FDC-9265-704CC8D496BE}" 
+0

虽然,它也在解决方案文件中,但它最初是在proj文件中,如果它只是一个类库的话。否则,将一个项目导入另一个解决方案很困难。 =) – 2012-07-24 12:55:11

+0

@J。谢恩,不知道。我想知道使用解决方案进行加载时优先级高低。 – Aphelion 2012-07-24 12:56:53

+0

我会假设解决方案文件,考虑到它首先加载 - 但我很不确定 - 所以我猜想“VS如何知道”的问题的答案将如您所说:解决方案文件。 ;) – 2012-07-24 12:57:57

4

ProjectTypeGuids确定的Visual Studio识别项目的类型。它包含在项目文件和解决方案文件中。一个项目可以属于多种项目类型,例如C#和VSTO。

WPF{60dc8134-eba5-43b8-bcc9-bb4bc16c2548}的WinForms一个GUID{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}OutputType WinExe一个GUID。