2012-01-24 18 views
0

确定一个VS2010 WebService的项目中,我写了一些PS检查的.csproj文件(执行一个SCM签入策略)从.csproj的

是下列检查足以确定一个.csproj的是一个WebService项目?

# Check for WebProjectProperties (indicates project is a Web Service) 
if ($xmldata.Project.ProjectExtensions.VisualStudio.FlavorProperties.WebProjectProperties -ne $null) 
{ 
    $isWebService = $true 
} 

我所看到的是解析Project.PropertyGroup.ProjectTypeGuids唯一的选择 - 但似乎矫枉过正,如果这个元素的WS总是被设置为好。

+2

我认为这个项目的GUID是最好的检验。它有保证。 – Will

+1

Re。那个“保证”,我希望能够找到一些MSDN文章和ProjectTypeGuids的列表,但是到目前为止我发现的最好的是:http://www.mztools.com/articles/2008/MZ2008017.aspx - 任何人都知道更明确的东西(例如由MS发布) – holtavolt

回答

3

经过深入挖掘,我(大部分)相信。我已添加此字典:

# Visual Studio ProjectTypeGuid keys - store in a constant dictionary 
# Courtesy of http://www.mztools.com/articles/2008/MZ2008017.aspx 
New-Variable -Name ProjTypeMap -Option Constant -Value @{ 
"FAE04EC0-301F-11D3-BF4B-00C04F79EFBC" = "Windows (C#)"; 
"F184B08F-C81C-45F6-A57F-5ABD9991F28F" = "Windows (VB.NET)"; 
"8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942" = "Windows (Visual C++)"; 
"349C5851-65DF-11DA-9384-00065B846F21" = "Web Application"; 
"E24C65DC-7377-472B-9ABA-BC803B73C61A" = "Web Site"; 
"F135691A-BF7E-435D-8960-F99683D2D49C" = "Distributed System"; 
"3D9AD99F-2412-4246-B90B-4EAA41C64699" = "Windows Communication Foundation (WCF)"; 
"60DC8134-EBA5-43B8-BCC9-BB4BC16C2548" = "Windows Presentation Foundation (WPF)"; 
"C252FEB5-A946-4202-B1D4-9916A0590387" = "Visual Database Tools"; 
"A9ACE9BB-CECE-4E62-9AA4-C7E7C5BD2124" = "Database"; 
"4F174C21-8C12-11D0-8340-0000F80270F8" = "Database (other project types)"; 
"3AC096D0-A1C2-E12C-1390-A8335801FDAB" = "Test"; 
"20D4826A-C6FA-45DB-90F4-C717570B9F32" = "Legacy (2003) Smart Device (C#)"; 
"CB4CE8C6-1BDB-4DC7-A4D3-65A1999772F8" = "Legacy (2003) Smart Device (VB.NET)"; 
"4D628B5B-2FBC-4AA6-8C16-197242AEB884" = "Smart Device (C#)"; 
"68B1623D-7FB9-47D8-8664-7ECEA3297D4F" = "Smart Device (VB.NET)"; 
"14822709-B5A1-4724-98CA-57A101D1B079" = "Workflow Foundation 3.0 (C#)"; 
"D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8" = "Workflow Foundation 3.0 (VB.NET)"; 
"32f31d43-81cc-4c15-9de6-3fc5453562b6" = "Workflow Foundation 4.0"; 
"06A35CCD-C46D-44D5-987B-CF40FF872267" = "Deployment Merge Module"; 
"3EA9E505-35AC-4774-B492-AD1749C4943A" = "Deployment Cab"; 
"978C614F-708E-4E1A-B201-565925725DBA" = "Deployment Setup"; 
"AB322303-2255-48EF-A496-5904EB18DA55" = "Deployment Smart Device Cab"; 
"A860303F-1F3F-4691-B57E-529FC101A107" = "Visual Studio Tools for Applications (VSTA)"; 
"BAA0C2D2-18E2-41B9-852F-F413020CAA33" = "Visual Studio Tools for Office (VSTO)"; 
"F8810EC1-6754-47FC-A15F-DFABD2E3FA90" = "SharePoint Workflow"; 
"6D335F3A-9D43-41b4-9D22-F6F17C4BE596" = "XNA (Windows)"; 
"2DF5C3F4-5A5F-47a9-8E94-23B4456F55E2" = "XNA (XBox)"; 
"D399B71A-8929-442a-A9AC-8BEC78BB2433" = "XNA (Zune)"; 
"EC05E597-79D4-47f3-ADA0-324C4F7C7484" = "SharePoint (VB.NET)"; 
"593B0543-81F6-4436-BA1E-4747859CAAE2" = "SharePoint (C#)"; 
"A1591282-1198-4647-A2B1-27E5FF5F6F3B" = "Silverlight" 
} 

并查找任何遇到的ProjectTypeGuide。这并没有在Project.ProjectExtensions.VisualStudio.FlavorProperties.WebProjectProperties上测试多一个WebApp,所以它更强大。

+1

添加了4.0工作流程的guid。你列出的是3.0工作流程。那篇文章有点老了,所以针对4.0的解决方案可能会有不同的指导。获得正确答案的唯一方法是遍历每个模板并创建一个新项目。然后,您可以扫描文件的GUID。 – Will

+1

谢谢!它看起来像也可以枚举HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ Projects \ {GUID}并从(默认)字符串中获得合理的描述,而不必创建每个。我希望可以识别.ps1语言的语法突出显示! – holtavolt

1

对于Web应用程序项目,WebProjectProperties部分也存在。

区别似乎是app.config(可能是web.config太?)包含(非空)configuration/system.serviceModel/services/service/host部分。

+0

感谢你的这个,看起来比维护一个guid列表更简单。 – Matthew

0

此列表非常有帮助!多谢。 我只是缺少此GUID:

“EF7E3281-CD33-11D4-8326-00C04FA0CE8D”= “的BizTalk”