从.csproj确定VS2010 Web服务项目

时间:2012-01-24 15:21:43

标签: visual-studio-2010 powershell

我正在写一些PS来检查.csproj文件(用于执行SCM签到策略)

以下检查是否足以确定.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设置,那么这似乎有点过分。

3 个答案:

答案 0 :(得分: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"
}

并查找遇到的任何ProjectTypeGuids。除了在Project.ProjectExtensions.VisualStudio.FlavorProperties.WebProjectProperties上进行测试之外,这确实清除了一个WebApp,因此它更强大。

答案 1 :(得分:1)

WebProjectProperties部分也适用于Web应用程序项目。

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

答案 2 :(得分:0)

此列表非常有用!多谢。 我只是错过了这个Guid:

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