
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Express 2012 for Windows Desktop
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
# 
#   http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "juddi-client.net-mono", "juddi-client.net\juddi-client.net-mono.csproj", "{C3D005CD-6C26-49FD-A4D8-08699B66AF6F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{FEB955BD-38E3-4816-94D3-EBF62F4CBB82}"
	ProjectSection(SolutionItems) = preProject
		.nuget\packages.config = .nuget\packages.config
	EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "juddi-client.net-integration.test-mono", "juddi-client.net-integration.test\juddi-client.net-integration.test-mono.csproj", "{ABE1C470-52E1-4C28-AB1D-91F1CD7B89C0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "juddi-client.net.test-mono", "juddi-client.net.test\juddi-client.net.test-mono.csproj", "{0AD62F71-EC84-4133-87FA-C27083F4D884}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AspnetServiceLifeCycle-mono", "example\AspnetServiceLifeCycle\AspnetServiceLifeCycle-mono.csproj", "{53F50B81-088B-4593-9F1C-F3D3F499F28C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WcfServiceLifeCycle-mono", "example\WcfServiceLifeCycle\WcfServiceLifeCycle-mono.csproj", "{072F737E-86E5-4B8E-A7FB-864A3ABB0D9A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "juddi-client.net-sample-mono", "juddi-client.net-sample\juddi-client.net-sample-mono.csproj", "{7FA52B63-F70A-4EC7-8390-CC7C1C9C6B84}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "juddi-client.net.cryptor-mono", "juddi-client.net.cryptor\juddi-client.net.cryptor-mono.csproj", "{15F6DF2F-82AF-49AA-B449-6E21F8409845}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "juddi-installer-mono", "juddi-installer\juddi-installer-mono.csproj", "{DE0FBD9D-0DD0-4062-B2B3-6DD608F761A0}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Release|Any CPU = Release|Any CPU
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{C3D005CD-6C26-49FD-A4D8-08699B66AF6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{C3D005CD-6C26-49FD-A4D8-08699B66AF6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{C3D005CD-6C26-49FD-A4D8-08699B66AF6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{C3D005CD-6C26-49FD-A4D8-08699B66AF6F}.Release|Any CPU.Build.0 = Release|Any CPU
		{ABE1C470-52E1-4C28-AB1D-91F1CD7B89C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{ABE1C470-52E1-4C28-AB1D-91F1CD7B89C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{ABE1C470-52E1-4C28-AB1D-91F1CD7B89C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{ABE1C470-52E1-4C28-AB1D-91F1CD7B89C0}.Release|Any CPU.Build.0 = Release|Any CPU
		{0AD62F71-EC84-4133-87FA-C27083F4D884}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{0AD62F71-EC84-4133-87FA-C27083F4D884}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{0AD62F71-EC84-4133-87FA-C27083F4D884}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{0AD62F71-EC84-4133-87FA-C27083F4D884}.Release|Any CPU.Build.0 = Release|Any CPU
		{53F50B81-088B-4593-9F1C-F3D3F499F28C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{53F50B81-088B-4593-9F1C-F3D3F499F28C}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{53F50B81-088B-4593-9F1C-F3D3F499F28C}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{53F50B81-088B-4593-9F1C-F3D3F499F28C}.Release|Any CPU.Build.0 = Release|Any CPU
		{072F737E-86E5-4B8E-A7FB-864A3ABB0D9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{072F737E-86E5-4B8E-A7FB-864A3ABB0D9A}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{072F737E-86E5-4B8E-A7FB-864A3ABB0D9A}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{072F737E-86E5-4B8E-A7FB-864A3ABB0D9A}.Release|Any CPU.Build.0 = Release|Any CPU
		{7FA52B63-F70A-4EC7-8390-CC7C1C9C6B84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{7FA52B63-F70A-4EC7-8390-CC7C1C9C6B84}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{7FA52B63-F70A-4EC7-8390-CC7C1C9C6B84}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{7FA52B63-F70A-4EC7-8390-CC7C1C9C6B84}.Release|Any CPU.Build.0 = Release|Any CPU
		{15F6DF2F-82AF-49AA-B449-6E21F8409845}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{15F6DF2F-82AF-49AA-B449-6E21F8409845}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{15F6DF2F-82AF-49AA-B449-6E21F8409845}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{15F6DF2F-82AF-49AA-B449-6E21F8409845}.Release|Any CPU.Build.0 = Release|Any CPU
		{DE0FBD9D-0DD0-4062-B2B3-6DD608F761A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{DE0FBD9D-0DD0-4062-B2B3-6DD608F761A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{DE0FBD9D-0DD0-4062-B2B3-6DD608F761A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{DE0FBD9D-0DD0-4062-B2B3-6DD608F761A0}.Release|Any CPU.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal
