diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..e36b54a
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,101 @@
+# EditorConfig is awesome:
+http://EditorConfig.org
+
+# top-most EditorConfig file
+root = true
+
+# Default settings:
+# A newline ending every file
+# Use tabs as indentation
+# Trim trailing whitespace
+[*]
+insert_final_newline = true
+indent_style = space
+indent_size = 4
+trim_trailing_whitespace = true
+
+[*.cs]
+csharp_style_conditional_delegate_call = true:suggestion
+csharp_style_expression_bodied_accessors = true:suggestion
+csharp_style_expression_bodied_constructors = false:suggestion
+csharp_style_expression_bodied_indexers = true:suggestion
+csharp_style_expression_bodied_methods = true:none
+csharp_style_expression_bodied_operators = false:none
+csharp_style_expression_bodied_properties = true:suggestion
+csharp_style_inlined_variable_declaration = true:suggestion
+csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
+csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
+csharp_style_throw_expression = true:suggestion
+csharp_style_var_elsewhere = true:none
+csharp_style_var_for_built_in_types = true:suggestion
+csharp_style_var_when_type_is_apparent = true:warning
+
+csharp_indent_block_contents = true:warning
+csharp_indent_braces = false:warning
+csharp_indent_case_contents = true:warning
+csharp_indent_switch_labels = true:warning
+
+csharp_prefer_braces = true:warning
+csharp_prefer_simple_default_expression = false:suggestion
+
+csharp_space_after_cast = false:warning
+csharp_space_after_keywords_in_control_flow_statements = true
+csharp_space_after_colon_in_inheritance_clause = true:warning
+csharp_space_after_comma = true:warning
+csharp_space_after_dot = false:error
+csharp_space_after_semicolon_in_for_statement = true:warning
+csharp_space_before_colon_in_inheritance_clause = true:warning
+csharp_space_before_comma = false:warning
+csharp_space_before_dot = false:error
+csharp_space_before_open_square_brackets = true:warning
+csharp_space_before_semicolon_in_for_statement = false:error
+
+[*.{cs,vb}]
+dotnet_sort_system_directives_first = true
+
+dotnet_style_coalesce_expression = true:warning
+dotnet_style_collection_initializer = true:suggestion
+dotnet_style_explicit_tuple_names = true:warning
+dotnet_style_null_propagation = true:suggestion
+dotnet_style_object_initializer = true:suggestion
+dotnet_style_predefined_type_for_locals_parameters_members = true:warning
+dotnet_style_predefined_type_for_member_access = false:warning
+dotnet_style_qualification_for_event = false:warning
+dotnet_style_qualification_for_field = false:warning
+dotnet_style_qualification_for_method = false:warning
+
+dotnet_naming_style.pascal_case.capitalization = pascal_case
+
+dotnet_naming_style.parameters.capitalization = pascal_case
+dotnet_naming_style.parameters.required_prefix = a
+
+dotnet_naming_style.private_fields.capitalization = pascal_case
+dotnet_naming_style.private_fields.required_prefix = _
+
+dotnet_naming_style.interfaces.capitalization = pascal_case
+dotnet_naming_style.interfaces.required_prefix = I
+
+dotnet_naming_symbols.interfaces.applicable_kinds = interface
+
+dotnet_naming_symbols.pascal_case_definitions.applicable_kinds = class, struct, enum, property, event, delegate
+
+dotnet_naming_symbols.parameters.applicable_kinds = parameter
+
+dotnet_naming_symbols.private_fields.applicable_kinds = field
+dotnet_naming_symbols.private_fields.applicable_accessibilities = private
+
+dotnet_naming_rule.interfaces.severity = warning
+dotnet_naming_rule.interfaces.symbols = interfaces
+dotnet_naming_rule.interfaces.style = interfaces
+
+dotnet_naming_rule.pascal_case_definitions.severity = warning
+dotnet_naming_rule.pascal_case_definitions.symbols = pascal_case_definitions
+dotnet_naming_rule.pascal_case_definitions.style = pascal_case
+
+dotnet_naming_rule.parameters.severity = suggestion
+dotnet_naming_rule.parameters.symbols = parameters
+dotnet_naming_rule.parameters.style = parameters
+
+dotnet_naming_rule.private_fields.severity = suggestion
+dotnet_naming_rule.private_fields.symbols = private_fields
+dotnet_naming_rule.private_fields.style = private_fields
diff --git a/Common.sln b/Common.sln
index 95a4618..c91654e 100644
--- a/Common.sln
+++ b/Common.sln
@@ -19,6 +19,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{B809
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cosmos.Build.Common", "source\Cosmos.Build.Common\Cosmos.Build.Common.csproj", "{9D0F61EB-2DC1-4DA1-A518-52941C237C85}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{008D41A3-3E20-4E93-AC75-28D4A8F5721F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cosmos.Build.Common.Tests", "tests\Cosmos.Build.Common.Tests\Cosmos.Build.Common.Tests.csproj", "{3FC10DCD-6DD5-4CE4-87E3-722BAE7754C1}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -29,6 +33,10 @@ Global
{9D0F61EB-2DC1-4DA1-A518-52941C237C85}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9D0F61EB-2DC1-4DA1-A518-52941C237C85}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9D0F61EB-2DC1-4DA1-A518-52941C237C85}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3FC10DCD-6DD5-4CE4-87E3-722BAE7754C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3FC10DCD-6DD5-4CE4-87E3-722BAE7754C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3FC10DCD-6DD5-4CE4-87E3-722BAE7754C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3FC10DCD-6DD5-4CE4-87E3-722BAE7754C1}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -36,6 +44,7 @@ Global
GlobalSection(NestedProjects) = preSolution
{B9B1C468-05AE-4F2E-B380-183C54F09652} = {D9C56F86-6C41-43A2-B501-60B3E5C02603}
{B8097007-F8B9-4F1F-A99A-C51F087EE634} = {B9B1C468-05AE-4F2E-B380-183C54F09652}
+ {3FC10DCD-6DD5-4CE4-87E3-722BAE7754C1} = {008D41A3-3E20-4E93-AC75-28D4A8F5721F}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D7D38725-20DB-44F3-8033-76C8A96E3F9D}
diff --git a/build/Targets/PackageVersions.targets b/build/Targets/PackageVersions.targets
index e3deb61..f070967 100644
--- a/build/Targets/PackageVersions.targets
+++ b/build/Targets/PackageVersions.targets
@@ -5,11 +5,14 @@
+
+
+
diff --git a/build/Targets/Versions.props b/build/Targets/Versions.props
index 2939236..7c36a81 100644
--- a/build/Targets/Versions.props
+++ b/build/Targets/Versions.props
@@ -4,10 +4,12 @@
2.6.2
15.8.166
1.0.0-alpha-004
+ 15.8.0
15.8.243
15.0.21
15.8.145
15.8.3252
+ 1.3.2
diff --git a/tests/Cosmos.Build.Common.Tests/BuildPropertiesTest.cs b/tests/Cosmos.Build.Common.Tests/BuildPropertiesTest.cs
new file mode 100644
index 0000000..379a3e8
--- /dev/null
+++ b/tests/Cosmos.Build.Common.Tests/BuildPropertiesTest.cs
@@ -0,0 +1,25 @@
+using System;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace Cosmos.Build.Common.Tests
+{
+ [TestClass]
+ public class BuildPropertiesTest
+ {
+ [TestMethod]
+ public void TestParsing()
+ {
+ var properties = new BuildProperties();
+ properties.SetProperty(BuildPropertyNames.StackCorruptionDetectionEnabledString, "False");
+ Assert.AreEqual(
+ false,
+ properties.GetProperty(BuildPropertyNames.StackCorruptionDetectionEnabledString, true));
+ Assert.AreEqual(
+ false,
+ properties.StackCorruptionDetectionEnabled);
+ Assert.AreEqual(
+ "False",
+ properties.GetProperty(BuildPropertyNames.StackCorruptionDetectionEnabledString));
+ }
+ }
+}
diff --git a/tests/Cosmos.Build.Common.Tests/Cosmos.Build.Common.Tests.csproj b/tests/Cosmos.Build.Common.Tests/Cosmos.Build.Common.Tests.csproj
new file mode 100644
index 0000000..da5c61a
--- /dev/null
+++ b/tests/Cosmos.Build.Common.Tests/Cosmos.Build.Common.Tests.csproj
@@ -0,0 +1,17 @@
+
+
+
+ netcoreapp2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/Cosmos.Build.Common.Tests/EnumValueTest.cs b/tests/Cosmos.Build.Common.Tests/EnumValueTest.cs
new file mode 100644
index 0000000..6e817df
--- /dev/null
+++ b/tests/Cosmos.Build.Common.Tests/EnumValueTest.cs
@@ -0,0 +1,26 @@
+using System;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace Cosmos.Build.Common.Tests
+{
+ [TestClass]
+ public class EnumValueTest
+ {
+ [TestMethod]
+ public void TestParsing()
+ {
+ var actual = EnumValue.Parse("bin", BinFormat.Bin);
+ Assert.AreEqual(BinFormat.Bin, actual);
+ actual = EnumValue.Parse("", BinFormat.Bin);
+ Assert.AreEqual(BinFormat.Bin, actual);
+ actual = EnumValue.Parse(" 1", BinFormat.Bin);
+ Assert.AreEqual(BinFormat.Bin, actual);
+ actual = EnumValue.Parse("elf", BinFormat.Bin);
+ Assert.AreEqual(BinFormat.Elf, actual);
+ actual = EnumValue.Parse("Elf", BinFormat.Bin);
+ Assert.AreEqual(BinFormat.Elf, actual);
+ actual = EnumValue.Parse("Bin", BinFormat.Bin);
+ Assert.AreEqual(BinFormat.Bin, actual);
+ }
+ }
+}