housekeeping: Make ReactiveUI compile on VisualStudio for Mac (#1932)

* housekeeping: allow for vs4mac copilation

* updated to use better target for fody

* Update the main CI to do mac as well

* fix syntax issues in azure yaml

* go back to old version of visual studio

* trying to get the proper mack version to compile

* cleanup android generation
This commit is contained in:
Glenn Watson 2019-01-31 22:43:12 +00:00 коммит произвёл Rodney Littles II
Родитель 20d1ebe1ec
Коммит f0d1cac902
20 изменённых файлов: 877 добавлений и 399 удалений

Просмотреть файл

@ -8,46 +8,74 @@ pr:
- rel/*
- preview/*
pool:
vmImage: vs2017-win2016
jobs:
- job: Windows
pool:
name: Default
steps:
- task: DotNetCoreInstaller@0
displayName: Install Dot Net Core v2.2.1
inputs:
version: '2.2.103'
steps:
- task: DotNetCoreInstaller@0
displayName: Install Dot Net Core v2.2.1
inputs:
version: '2.2.103'
- task: BatchScript@1
inputs:
filename: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"
arguments: -no_logo
modifyEnvironment: true
displayName: Setup Environment Variables
- task: BatchScript@1
inputs:
filename: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\Common7\\Tools\\VsDevCmd.bat"
arguments: -no_logo
modifyEnvironment: true
displayName: Setup Environment Variables
- task: DotNetCoreCLI@2
inputs:
command: custom
custom: tool
arguments: install --tool-path . nbgv
displayName: Install NBGV tool
- powershell: .\build.ps1 -Target UploadTestCoverage
displayName: Build
env:
CODECOV_TOKEN: $(CODECOV_TOKEN)
ArtifactDirectory: $(System.DefaultWorkingDirectory)\artifacts
- task: CopyFiles@2
inputs:
Contents: 'artifacts/tests/**/*'
TargetFolder: '$(build.artifactstagingdirectory)\Tests'
- script: nbgv cloud
displayName: Set Version
- task: PublishCodeCoverageResults@1
displayName: Publish Coverage Results
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: 'artifacts\tests\report\Cobertura.xml'
reportDirectory: 'artifacts\tests\report'
- powershell: .\build.ps1 -Target UploadTestCoverage
displayName: Build
env:
CODECOV_TOKEN: $(CODECOV_TOKEN)
ArtifactDirectory: $(System.DefaultWorkingDirectory)\artifacts
- task: CopyFiles@2
inputs:
Contents: 'artifacts/tests/**/*'
TargetFolder: '$(build.artifactstagingdirectory)\Tests'
- task: PublishTestResults@2
displayName: Publish Test Results
inputs:
testResultsFormat: 'VSTest'
testResultsFiles: 'testresults-*.trx'
searchFolder: 'artifacts\tests'
- task: PublishBuildArtifacts@1
displayName: Publish Test Data
inputs:
pathToPublish: '$(build.artifactstagingdirectory)\Tests'
artifactType: container
artifactName: Tests
- job: Mac
pool:
vmImage: 'macOS-10.13'
steps:
- task: DotNetCoreInstaller@0
displayName: Install Dot Net Core v2.2.1
inputs:
version: '2.2.103'
- bash: ./build.sh --target=RunUnitTests
displayName: Build
env:
CODECOV_TOKEN: $(CODECOV_TOKEN)
ArtifactDirectory: $(System.DefaultWorkingDirectory)/artifacts
- task: PublishCodeCoverageResults@1
displayName: Publish Coverage Results
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: 'artifacts\tests\report\Cobertura.xml'
reportDirectory: 'artifacts\tests\report'
- task: PublishTestResults@2
displayName: Publish Test Results
inputs:
testResultsFormat: 'VSTest'
testResultsFiles: 'testresults-*.trx'
searchFolder: 'artifacts\tests'

Просмотреть файл

@ -8,65 +8,75 @@ pr:
- rel/*
- preview/*
pool:
vmImage: vs2017-win2016
jobs:
- job: Windows
pool:
vmImage: vs2017-win2016
steps:
- task: DotNetCoreInstaller@0
displayName: Install Dot Net Core v2.2.1
inputs:
version: '2.2.103'
steps:
- task: DotNetCoreInstaller@0
displayName: Install Dot Net Core v2.2.1
inputs:
version: '2.2.103'
- task: BatchScript@1
inputs:
filename: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"
arguments: -no_logo
modifyEnvironment: true
displayName: Setup Environment Variables
- task: BatchScript@1
inputs:
filename: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"
arguments: -no_logo
modifyEnvironment: true
displayName: Setup Environment Variables
- powershell: .\build.ps1
displayName: Build
env:
SIGNCLIENT_SECRET: $(SignClientSecret)
SIGNCLIENT_USER: $(SignClientUser)
ArtifactDirectory: $(System.DefaultWorkingDirectory)\artifacts
- powershell: .\build.ps1
displayName: Build
env:
SIGNCLIENT_SECRET: $(SignClientSecret)
SIGNCLIENT_USER: $(SignClientUser)
VSTS_ACCESS_TOKEN: $(System.AccessToken)
COVERALLS_TOKEN: $(COVERALLS_TOKEN)
CODECOV_TOKEN: $(CODECOV_TOKEN)
ArtifactDirectory: $(System.DefaultWorkingDirectory)\artifacts
- task: CopyFiles@2
inputs:
Contents: 'artifacts/packages/*.nupkg'
TargetFolder: '$(build.artifactstagingdirectory)\packages'
flattenFolders: true
- task: CopyFiles@2
inputs:
Contents: 'artifacts/packages/*.nupkg'
TargetFolder: '$(build.artifactstagingdirectory)\packages'
flattenFolders: true
- task: PublishBuildArtifacts@1
displayName: Publish Package Artifacts
inputs:
pathToPublish: '$(build.artifactstagingdirectory)\packages'
artifactType: container
artifactName: Packages
- task: PublishBuildArtifacts@1
displayName: Publish Package Artifacts
inputs:
pathToPublish: '$(build.artifactstagingdirectory)\packages'
artifactType: container
artifactName: Packages
- task: CopyFiles@2
inputs:
Contents: 'artifacts/binaries/**/*'
TargetFolder: '$(build.artifactstagingdirectory)\binaries'
- task: CopyFiles@2
inputs:
Contents: 'artifacts/binaries/**/*'
TargetFolder: '$(build.artifactstagingdirectory)\binaries'
- task: PublishBuildArtifacts@1
displayName: Publish Binaries
inputs:
pathToPublish: '$(build.artifactstagingdirectory)\binaries'
artifactType: container
artifactName: Binaries
- task: PublishBuildArtifacts@1
displayName: Publish Binaries
inputs:
pathToPublish: '$(build.artifactstagingdirectory)\binaries'
artifactType: container
artifactName: Binaries
- task: CopyFiles@2
inputs:
Contents: 'artifacts/Events/*.cs'
TargetFolder: '$(build.artifactstagingdirectory)\Events'
- task: CopyFiles@2
inputs:
Contents: 'artifacts/Events/*.cs'
TargetFolder: '$(build.artifactstagingdirectory)\Events'
- task: PublishBuildArtifacts@1
displayName: Publish Generated Events
inputs:
pathToPublish: '$(build.artifactstagingdirectory)\Events'
artifactType: container
artifactName: Events
- task: PublishBuildArtifacts@1
displayName: Publish Generated Events
inputs:
pathToPublish: '$(build.artifactstagingdirectory)\Events'
artifactType: container
artifactName: Events
- job: Mac
pool:
vmImage: 'macOS-10.13'
steps:
- task: DotNetCoreInstaller@0
displayName: Install Dot Net Core v2.2.1
inputs:
version: '2.2.103'
- bash: ./build.sh --target=Build
displayName: Build

Просмотреть файл

@ -7,34 +7,110 @@
//////////////////////////////////////////////////////////////////////
#addin "nuget:?package=Cake.FileHelpers&version=3.1.0"
#addin "nuget:?package=Cake.Coverlet&version=2.2.1"
#addin "nuget:?package=Cake.PinNuGetDependency&loaddependencies=true&version=3.2.3"
#addin "nuget:?package=Cake.Powershell&version=0.4.7"
#addin "nuget:?package=Cake.Codecov&version=0.5.0"
#addin "nuget:?package=Cake.Coverlet&version=2.2.1"
//////////////////////////////////////////////////////////////////////
// MODULES
//////////////////////////////////////////////////////////////////////
#module nuget:?package=Cake.DotNetTool.Module&version=0.1.0
#module "nuget:?package=Cake.DotNetTool.Module&version=0.1.0"
//////////////////////////////////////////////////////////////////////
// TOOLS
//////////////////////////////////////////////////////////////////////
#tool "nuget:?package=ReportGenerator&version=4.0.4"
#tool "nuget:?package=vswhere&version=2.5.2"
#tool "nuget:?package=vswhere&version=2.5.9"
#tool "nuget:?package=xunit.runner.console&version=2.4.1"
#tool "nuget:?package=Codecov&version=1.1.0"
#tool "nuget:?package=OpenCover&version=4.7.906-rc"
#tool "nuget:?package=ReportGenerator&version=4.0.9"
//////////////////////////////////////////////////////////////////////
// DOTNET TOOLS
//////////////////////////////////////////////////////////////////////
#tool "dotnet:?package=SignClient&version=1.0.82"
#tool "dotnet:?package=coverlet.console&version=1.4.1"
#tool "dotnet:?package=nbgv&version=2.3.38"
//////////////////////////////////////////////////////////////////////
// CONSTANTS
//////////////////////////////////////////////////////////////////////
const string project = "ReactiveUI";
// Whitelisted Packages
var packageWhitelist = new List<string>
{
"ReactiveUI",
"ReactiveUI.Testing",
"ReactiveUI.Events",
"ReactiveUI.Events.XamEssentials",
"ReactiveUI.Events.XamForms",
"ReactiveUI.Fody",
"ReactiveUI.Fody.Helpers",
"ReactiveUI.AndroidSupport",
"ReactiveUI.XamForms",
};
if (IsRunningOnWindows())
{
packageWhitelist.AddRange(new []
{
"ReactiveUI.Blend",
"ReactiveUI.WPF",
"ReactiveUI.Winforms",
"ReactiveUI.Events.WPF",
"ReactiveUI.Events.Winforms",
// TODO: seems the leak tests never worked as part of the CI, fix. For the moment just make sure it compiles.
"ReactiveUI.LeakTests"
});
}
var packageTestWhitelist = new List<string>
{
"ReactiveUI.Tests",
};
if (IsRunningOnWindows())
{
packageTestWhitelist.AddRange(new[]
{
"ReactiveUI.Fody.Tests"
});
}
var coverageTestFrameworks = new List<string>
{
"netcoreapp2.0"
};
if (IsRunningOnWindows())
{
coverageTestFrameworks.Add("net461");
}
var eventGenerators = new List<(string targetName, string destination)>
{
("android", "src/ReactiveUI.Events/"),
("ios", "src/ReactiveUI.Events/"),
("mac", "src/ReactiveUI.Events/"),
("tizen4", "src/ReactiveUI.Events/"),
("essentials", "src/ReactiveUI.Events.XamEssentials/"),
("tvos", "src/ReactiveUI.Events/"),
("xamforms", "src/ReactiveUI.Events.XamForms/"),
};
if (IsRunningOnWindows())
{
eventGenerators.AddRange(new []
{
("wpf", "src/ReactiveUI.Events.WPF/"),
("uwp", "src/ReactiveUI.Events/"),
("winforms", "src/ReactiveUI.Events.Winforms/"),
});
}
//////////////////////////////////////////////////////////////////////
// ARGUMENTS
//////////////////////////////////////////////////////////////////////
@ -65,94 +141,45 @@ var treatWarningsAsErrors = false;
// Build configuration
var local = BuildSystem.IsLocalBuild;
var isPullRequest = !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("SYSTEM_PULLREQUEST_PULLREQUESTNUMBER"));
var isRepository = StringComparer.OrdinalIgnoreCase.Equals("reactiveui/reactiveui", TFBuild.Environment.Repository.RepoName);
var isRepository = StringComparer.OrdinalIgnoreCase.Equals($"reactiveui/{project}", TFBuild.Environment.Repository.RepoName);
var vsWhereSettings = new VSWhereLatestSettings() { IncludePrerelease = includePrerelease };
var vsLocation = string.IsNullOrWhiteSpace(vsLocationString) ? VSWhereLatest(vsWhereSettings) : new DirectoryPath(vsLocationString);
var msBuildPath = string.IsNullOrWhiteSpace(msBuildPathString) ? vsLocation.CombineWithFilePath("./MSBuild/15.0/Bin/MSBuild.exe") : new FilePath(msBuildPathString);
FilePath msBuildPath = null;
DirectoryPath referenceAssembliesPath = null;
if (IsRunningOnWindows())
{
var vsWhereSettings = new VSWhereLatestSettings() { IncludePrerelease = includePrerelease };
var vsLocation = string.IsNullOrWhiteSpace(vsLocationString) ? VSWhereLatest(vsWhereSettings) : new DirectoryPath(vsLocationString);
msBuildPath = string.IsNullOrWhiteSpace(msBuildPathString) ? vsLocation.CombineWithFilePath("./MSBuild/15.0/Bin/MSBuild.exe") : new FilePath(msBuildPathString);
referenceAssembliesPath = vsLocation.Combine("./Common7/IDE/ReferenceAssemblies/Microsoft/Framework");
}
else
{
referenceAssembliesPath = Directory("/Library/Frameworks/Libraries/mono");
}
var informationalVersion = EnvironmentVariable("GitAssemblyInformationalVersion");
//////////////////////////////////////////////////////////////////////
// FOLDERS
//////////////////////////////////////////////////////////////////////
// Artifacts
var artifactDirectory = "./artifacts/";
var testsArtifactDirectory = artifactDirectory + "tests/";
var eventsArtifactDirectory = artifactDirectory + "Events/";
var binariesArtifactDirectory = artifactDirectory + "binaries/";
var packagesArtifactDirectory = artifactDirectory + "packages/";
// OpenCover file location
var testCoverageOutputFile = MakeAbsolute(File(testsArtifactDirectory + "OpenCover.xml"));
// Whitelisted Packages
var packageWhitelist = new[]
{
"ReactiveUI",
"ReactiveUI.Testing",
"ReactiveUI.Events",
"ReactiveUI.Events.WPF",
"ReactiveUI.Events.Winforms",
"ReactiveUI.Events.XamEssentials",
"ReactiveUI.Events.XamForms",
"ReactiveUI.Fody",
"ReactiveUI.Fody.Helpers",
"ReactiveUI.AndroidSupport",
"ReactiveUI.Blend",
"ReactiveUI.WPF",
"ReactiveUI.Winforms",
"ReactiveUI.XamForms",
// TODO: seems the leak tests never worked as part of the CI, fix. For the moment just make sure it compiles.
"ReactiveUI.LeakTests"
};
(string projectName, bool performCoverageTesting)[] packageTestWhitelist = new[]
{
("ReactiveUI.Tests", true),
("ReactiveUI.Fody.Tests", true),
};
(string name, bool performCoverageTesting)[] testFrameworks = new[]
{
("net461", true),
("netcoreapp2.0", false),
};
(string targetName, string destination)[] eventGenerators = new[]
{
("android", "src/ReactiveUI.Events/"),
("ios", "src/ReactiveUI.Events/"),
("mac", "src/ReactiveUI.Events/"),
("uwp", "src/ReactiveUI.Events/"),
("tizen4", "src/ReactiveUI.Events/"),
("wpf", "src/ReactiveUI.Events.WPF/"),
("xamforms", "src/ReactiveUI.Events.XamForms/"),
("winforms", "src/ReactiveUI.Events.Winforms/"),
("essentials", "src/ReactiveUI.Events.XamEssentials/"),
("tvos", "src/ReactiveUI.Events/"),
};
// Define global marcos.
Action Abort = () => { throw new Exception("a non-recoverable fatal error occurred."); };
var eventsArtifactDirectory = artifactDirectory + "Events/";
///////////////////////////////////////////////////////////////////////////////
// SETUP / TEARDOWN
///////////////////////////////////////////////////////////////////////////////
Setup(context =>
{
if (!IsRunningOnWindows())
{
throw new NotImplementedException("ReactiveUI will only build on Windows (w/Xamarin installed) because it's not possible to target UWP, WPF and Windows Forms from UNIX.");
}
StartProcess(Context.Tools.Resolve("nbgv*").ToString(), "cloud");
Information("Building version {0} of ReactiveUI.", informationalVersion);
CreateDirectory(artifactDirectory);
CleanDirectories(artifactDirectory);
CreateDirectory(testsArtifactDirectory);
CreateDirectory(eventsArtifactDirectory);
CreateDirectory(binariesArtifactDirectory);
CreateDirectory(packagesArtifactDirectory);
StartProcess(Context.Tools.Resolve("nbgv.*").ToString(), "cloud");
CreateDirectory(eventsArtifactDirectory);
});
Teardown(context =>
@ -160,11 +187,10 @@ Teardown(context =>
// Executed AFTER the last task.
});
//////////////////////////////////////////////////////////////////////
// HELPER METHODS
//////////////////////////////////////////////////////////////////////
Action<string, string> Build = (solution, packageOutputPath) =>
Action<string, string, bool> Build = (solution, packageOutputPath, doNotOptimise) =>
{
Information("Building {0} using {1}", solution, msBuildPath);
@ -184,6 +210,11 @@ Action<string, string> Build = (solution, packageOutputPath) =>
msBuildSettings = msBuildSettings.WithProperty("PackageOutputPath", MakeAbsolute(Directory(packageOutputPath)).ToString().Quote());
}
if (doNotOptimise)
{
msBuildSettings = msBuildSettings.WithProperty("Optimize", "False");
}
MSBuild(solution, msBuildSettings);
};
@ -194,7 +225,7 @@ Action<string, string> Build = (solution, packageOutputPath) =>
Task("BuildEventBuilder")
.Does(() =>
{
Build("./src/EventBuilder.sln", artifactDirectory + "eventbuilder");
Build("./src/EventBuilder.sln", artifactDirectory + "eventbuilder", false);
});
Task("GenerateEvents")
@ -203,12 +234,11 @@ Task("GenerateEvents")
{
var workingDirectory = MakeAbsolute(Directory("./src/EventBuilder/bin/Release/netcoreapp2.1"));
var eventBuilder = workingDirectory + "/EventBuilder.dll";
var referenceAssembliesPath = vsLocation.CombineWithFilePath("./Common7/IDE/ReferenceAssemblies/Microsoft/Framework");
Information(referenceAssembliesPath.ToString());
Action<string, string> generate = (string platform, string directory) =>
foreach (var eventGenerator in eventGenerators)
{
var (platform, directory) = eventGenerator;
var settings = new DotNetCoreExecuteSettings
{
WorkingDirectory = workingDirectory,
@ -227,106 +257,72 @@ Task("GenerateEvents")
settings);
Information("The events have been written to '{0}'", output);
};
Parallel.ForEach(eventGenerators, arg => generate(arg.targetName, arg.destination));
}
CopyFiles(GetFiles("./src/ReactiveUI.**/Events_*.cs"), Directory(eventsArtifactDirectory));
});
Task("BuildReactiveUIPackages")
Task("Build")
.IsDependentOn("GenerateEvents")
.Does (() =>
{
// Clean the directories since we'll need to re-generate the debug type.
CleanDirectories("./src/**/obj/Release");
CleanDirectories("./src/**/bin/Release");
CleanDirectories($"./src/**/obj/{configuration}");
CleanDirectories($"./src/**/bin/{configuration}");
foreach(var packageName in packageWhitelist)
{
Build($"./src/{packageName}/{packageName}.csproj", packagesArtifactDirectory);
Build($"./src/{packageName}/{packageName}.csproj", packagesArtifactDirectory, false);
}
CopyFiles(GetFiles("./src/**/bin/Release/**/*"), Directory(binariesArtifactDirectory), true);
CopyFiles(GetFiles($"./src/**/bin/{configuration}/**/*"), Directory(binariesArtifactDirectory), true);
});
Task("RunUnitTests")
.IsDependentOn("GenerateEvents")
.Does(() =>
{
var fodyPackages = new string[]
foreach (var packageName in packageTestWhitelist)
{
"ReactiveUI.Fody",
"ReactiveUI.Fody.Helpers",
};
// Clean the directories since we'll need to re-generate the debug type.
CleanDirectories("./src/**/obj/Release");
CleanDirectories("./src/**/bin/Release");
foreach (var packageName in fodyPackages)
{
Build($"./src/{packageName}/{packageName}.csproj", null);
}
var openCoverSettings = new OpenCoverSettings {
ReturnTargetCodeOffset = 0,
MergeOutput = true,
}
.WithFilter("+[ReactiveUI*]*")
.WithFilter("-[*.Testing]*")
.WithFilter("-[*.Tests*]*")
.WithFilter("-[ReactiveUI.Events*]*")
.WithFilter("-[ReactiveUI*]ReactiveUI.*Legacy*")
.WithFilter("-[ReactiveUI*]ThisAssembly*")
.ExcludeByAttribute("*.ExcludeFromCodeCoverage*")
.ExcludeByFile("*/*Designer.cs")
.ExcludeByFile("*/*.g.cs")
.ExcludeByFile("*/*.g.i.cs")
.ExcludeByFile("*splat/splat*")
.ExcludeByFile("*ApprovalTests*");
var xunitSettings = new XUnit2Settings {
HtmlReport = true,
OutputDirectory = testsArtifactDirectory,
NoAppDomain = true
};
foreach (var packageDetails in packageTestWhitelist)
{
var packageName = packageDetails.projectName;
var projectName = $"./src/{packageName}/{packageName}.csproj";
Build(projectName, null);
foreach (var testFramework in testFrameworks)
Build(projectName, null, true);
foreach (var testFramework in coverageTestFrameworks)
{
if (testFramework.performCoverageTesting && packageDetails.performCoverageTesting)
{
Information($"Generate OpenCover information for {packageName} {testFramework.name}");
OpenCover(
tool => tool.XUnit2($"./src/{packageName}/bin/{configuration}/{testFramework.name}/**/*.Tests.dll", xunitSettings),
testCoverageOutputFile,
openCoverSettings);
}
else
{
Information($"Running unit tests only for {packageName} {testFramework.name}");
var testSettings = new DotNetCoreTestSettings {
NoBuild = true,
Framework = testFramework.name,
Configuration = configuration,
ResultsDirectory = testsArtifactDirectory,
Logger = $"trx;LogFileName=testresults-{packageName}-{testFramework.name}.trx",
TestAdapterPath = GetDirectories("./tools/xunit.runner.console*/**/netcoreapp2.0").FirstOrDefault(),
};
Information($"Performing coverage tests on {packageName} on framework {testFramework}");
DotNetCoreTest(projectName, testSettings);
}
var testFile = $"./src/{packageName}/bin/{configuration}/{testFramework}/{packageName}.dll";
StartProcess(Context.Tools.Resolve("coverlet*").ToString(), new ProcessSettings {
RedirectStandardOutput = true,
RedirectStandardError = true,
Arguments = new ProcessArgumentBuilder()
.AppendQuoted(testFile)
.AppendSwitch("--include", $"[{project}*]*")
.AppendSwitch("--exclude", "[*.Tests*]*")
.AppendSwitch("--exclude", "[*]*Legacy*")
.AppendSwitch("--exclude", "[*]*ThisAssembly*")
.AppendSwitch("--exclude-by-file", "*ApprovalTests*")
.AppendSwitchQuoted("--output", testsArtifactDirectory + $"testcoverage-{packageName}-{testFramework}.xml")
.AppendSwitch("--format", "cobertura")
.AppendSwitch("--target", "dotnet")
.AppendSwitchQuoted("--targetargs", $"test {projectName} --no-build -c {configuration} --logger:trx;LogFileName=testresults-{packageName}-{testFramework}.trx -r {MakeAbsolute(Directory(testsArtifactDirectory))}")
});
Information($"Finished coverage testing {packageName}");
}
}
ReportGenerator(testCoverageOutputFile, testsArtifactDirectory + "Report/");
}).ReportError(exception =>
// Generate both a summary and a combined summary.
ReportGenerator(
GetFiles($"{testsArtifactDirectory}**/testcoverage-*.xml"),
testsArtifactDirectory + "report/",
new ReportGeneratorSettings
{
ReportTypes = new[] { ReportGeneratorReportType.Cobertura, ReportGeneratorReportType.Html },
});
})
.ReportError(exception =>
{
var apiApprovals = GetFiles("./**/ApiApprovalTests.*");
CopyFiles(apiApprovals, artifactDirectory);
@ -340,16 +336,25 @@ Task("UploadTestCoverage")
{
// Resolve the API key.
var token = EnvironmentVariable("CODECOV_TOKEN");
if(EnvironmentVariable("CODECOV_TOKEN") == null)
{
throw new Exception("Codecov token not found, not sending code coverage data.");
}
if (!string.IsNullOrEmpty(token))
{
Information("Upload {0} to Codecov server", testCoverageOutputFile);
var testCoverageOutputFile = MakeAbsolute(File(testsArtifactDirectory + "Report/Cobertura.xml"));
Information("Upload {0} to Codecov server", testCoverageOutputFile);
// Upload a coverage report.
Codecov(testCoverageOutputFile.ToString(), token);
}
});
Task("SignPackages")
.IsDependentOn("Build")
.WithCriteria(() => !local)
.WithCriteria(() => !isPullRequest)
.Does(() =>
@ -365,7 +370,7 @@ Task("SignPackages")
var packageName = nupkg.GetFilenameWithoutExtension();
Information($"Submitting {packageName} for signing");
StartProcess(Context.Tools.Resolve("SignClient.*").ToString(), new ProcessSettings {
StartProcess(Context.Tools.Resolve("SignClient*").ToString(), new ProcessSettings {
RedirectStandardOutput = true,
RedirectStandardError = true,
Arguments = new ProcessArgumentBuilder()
@ -386,36 +391,19 @@ Task("SignPackages")
});
Task("Package")
.IsDependentOn("BuildReactiveUIPackages")
.IsDependentOn("PinNuGetDependencies")
.IsDependentOn("Build")
.IsDependentOn("SignPackages")
.Does (() =>
{
});
Task("PinNuGetDependencies")
.Does (() =>
{
var packages = GetFiles(artifactDirectory + "*.nupkg");
foreach(var package in packages)
{
// only pin whitelisted packages.
if(packageWhitelist.Any(p => package.GetFilename().ToString().StartsWith(p, StringComparison.OrdinalIgnoreCase)))
{
// see https://github.com/cake-contrib/Cake.PinNuGetDependency
PinNuGetDependency(package, "ReactiveUI");
}
}
});
//////////////////////////////////////////////////////////////////////
// TASK TARGETS
//////////////////////////////////////////////////////////////////////
Task("Default")
.IsDependentOn("Package")
.IsDependentOn("RunUnitTests")
.Does (() =>
{
});
@ -424,4 +412,4 @@ Task("Default")
// EXECUTION
//////////////////////////////////////////////////////////////////////
RunTarget(target);
RunTarget(target);

2
build.config Normal file
Просмотреть файл

@ -0,0 +1,2 @@
#!/usr/bin/env bash
CAKE_VERSION=0.32.1

123
build.sh
Просмотреть файл

@ -1,102 +1,51 @@
#!/usr/bin/env bash
##########################################################################
# This is the Cake bootstrapper script for Linux and OS X.
# This file was downloaded from https://github.com/cake-build/resources
# Feel free to change this file to fit your needs.
##########################################################################
# Define directories.
# Define varibles
SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
source $SCRIPT_DIR/build.config
TOOLS_DIR=$SCRIPT_DIR/tools
NUGET_EXE=$TOOLS_DIR/nuget.exe
CAKE_EXE=$TOOLS_DIR/Cake/Cake.exe
PACKAGES_CONFIG=$TOOLS_DIR/packages.config
PACKAGES_CONFIG_MD5=$TOOLS_DIR/packages.config.md5sum
# Define md5sum or md5 depending on Linux/OSX
MD5_EXE=
if [[ "$(uname -s)" == "Darwin" ]]; then
MD5_EXE="md5 -r"
else
MD5_EXE="md5sum"
fi
# Define default arguments.
SCRIPT="build.cake"
TARGET="Default"
CONFIGURATION="Release"
VERBOSITY="verbose"
DRYRUN=
SHOW_VERSION=false
SCRIPT_ARGUMENTS=()
# Parse arguments.
for i in "$@"; do
case $1 in
-s|--script) SCRIPT="$2"; shift ;;
-t|--target) TARGET="$2"; shift ;;
-c|--configuration) CONFIGURATION="$2"; shift ;;
-v|--verbosity) VERBOSITY="$2"; shift ;;
-d|--dryrun) DRYRUN="-dryrun" ;;
--version) SHOW_VERSION=true ;;
--) shift; SCRIPT_ARGUMENTS+=("$@"); break ;;
*) SCRIPT_ARGUMENTS+=("$1") ;;
esac
shift
done
CAKE_EXE=$TOOLS_DIR/dotnet-cake
CAKE_PATH=$TOOLS_DIR/.store/cake.tool/$CAKE_VERSION
# Make sure the tools folder exist.
if [ ! -d "$TOOLS_DIR" ]; then
mkdir "$TOOLS_DIR"
fi
# Make sure that packages.config exist.
if [ ! -f "$TOOLS_DIR/packages.config" ]; then
echo "Downloading packages.config..."
curl -Lsfo "$TOOLS_DIR/packages.config" https://cakebuild.net/download/bootstrapper/packages
if [ $? -ne 0 ]; then
echo "An error occurred while downloading packages.config."
###########################################################################
# INSTALL CAKE
###########################################################################
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
export DOTNET_CLI_TELEMETRY_OPTOUT=1
export DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER=0
CAKE_INSTALLED_VERSION=$(dotnet-cake --version 2>&1)
if [ "$CAKE_VERSION" != "$CAKE_INSTALLED_VERSION" ]; then
if [ ! -f "$CAKE_EXE" ] || [ ! -d "$CAKE_PATH" ]; then
if [ -f "$CAKE_EXE" ]; then
dotnet tool uninstall --tool-path $TOOLS_DIR Cake.Tool
fi
echo "Installing Cake $CAKE_VERSION..."
dotnet tool install --tool-path $TOOLS_DIR --version $CAKE_VERSION Cake.Tool
if [ $? -ne 0 ]; then
echo "An error occured while installing Cake."
exit 1
fi
fi
# Make sure that Cake has been installed.
if [ ! -f "$CAKE_EXE" ]; then
echo "Could not find Cake.exe at '$CAKE_EXE'."
exit 1
fi
else
CAKE_EXE="dotnet-cake"
fi
# Download NuGet if it does not exist.
if [ ! -f "$NUGET_EXE" ]; then
echo "Downloading NuGet..."
curl -Lsfo "$NUGET_EXE" https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
if [ $? -ne 0 ]; then
echo "An error occurred while downloading nuget.exe."
exit 1
fi
fi
# Restore tools from NuGet.
pushd "$TOOLS_DIR" >/dev/null
if [ ! -f $PACKAGES_CONFIG_MD5 ] || [ "$( cat $PACKAGES_CONFIG_MD5 | sed 's/\r$//' )" != "$( $MD5_EXE $PACKAGES_CONFIG | awk '{ print $1 }' )" ]; then
find . -type d ! -name . | xargs rm -rf
fi
mono "$NUGET_EXE" install -ExcludeVersion
if [ $? -ne 0 ]; then
echo "Could not restore NuGet packages."
exit 1
fi
$MD5_EXE $PACKAGES_CONFIG | awk '{ print $1 }' >| $PACKAGES_CONFIG_MD5
popd >/dev/null
# Make sure that Cake has been installed.
if [ ! -f "$CAKE_EXE" ]; then
echo "Could not find Cake.exe at '$CAKE_EXE'."
exit 1
fi
###########################################################################
# RUN BUILD SCRIPT
###########################################################################
# Start Cake
if $SHOW_VERSION; then
exec mono "$CAKE_EXE" -version
else
exec mono "$CAKE_EXE" --bootstrap
exec mono "$CAKE_EXE" $SCRIPT -verbosity=$VERBOSITY -configuration=$CONFIGURATION -target=$TARGET $DRYRUN "${SCRIPT_ARGUMENTS[@]}"
fi
(exec "$CAKE_EXE" --bootstrap) && (exec "$CAKE_EXE" "$@")

Просмотреть файл

@ -16,6 +16,10 @@
<!-- Include PDB in the built .nupkg -->
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)analyzers.ruleset</CodeAnalysisRuleSet>
<!-- disable sourcelink on mono, to workaround https://github.com/dotnet/sourcelink/issues/155 -->
<EnableSourceLink Condition=" '$(OS)' != 'Windows_NT' AND '$(MSBuildRuntimeType)' != 'Core' ">false</EnableSourceLink>
<EnableSourceControlManagerQueries>$(EnableSourceLink)</EnableSourceControlManagerQueries>
</PropertyGroup>
<PropertyGroup Condition="$(IsTestProject)">

Просмотреть файл

@ -5,6 +5,7 @@
<AssemblyName>EventBuilder</AssemblyName>
<RootNamespace>EventBuilder</RootNamespace>
<LangVersion>latest</LangVersion>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>

Просмотреть файл

@ -4,6 +4,7 @@
// See the LICENSE file in the project root for full license information.
using System;
using System.Runtime.InteropServices;
namespace EventBuilder
{
@ -12,7 +13,7 @@ namespace EventBuilder
/// </summary>
public static class PlatformHelper
{
private static readonly Lazy<bool> _IsRunningOnMono = new Lazy<bool>(() => Type.GetType("Mono.Runtime") != null);
private static readonly Lazy<bool> _IsRunningOnMono = new Lazy<bool>(() => !RuntimeInformation.IsOSPlatform(OSPlatform.Windows));
/// <summary>
/// Determines whether the platform is running on mono.

Просмотреть файл

@ -4,6 +4,7 @@
// See the LICENSE file in the project root for full license information.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
@ -17,6 +18,8 @@ namespace EventBuilder.Platforms
/// <seealso cref="BasePlatform" />
public class Android : BasePlatform
{
private const string DesiredVersion = "v8.1";
private readonly string _referenceAssembliesLocation;
/// <summary>
@ -34,37 +37,31 @@ namespace EventBuilder.Platforms
/// <inheritdoc />
public override Task Extract()
{
var sdks = new List<string>();
if (PlatformHelper.IsRunningOnMono())
{
var sdks =
Directory.GetFiles(
@"/Library/Frameworks/Xamarin.Android.framework/Libraries/xbuild-frameworks/MonoAndroid",
"Mono.Android.dll",
SearchOption.AllDirectories);
var latestVersion = sdks.Last();
Assemblies.Add(latestVersion);
CecilSearchDirectories.Add(Path.GetDirectoryName(latestVersion));
CecilSearchDirectories.Add(
"/Library/Frameworks/Xamarin.Android.framework/Libraries/xbuild-frameworks/MonoAndroid/v1.0");
sdks.AddRange(Directory.GetFiles(
"/Library/Frameworks/Xamarin.Android.framework/Libraries/xbuild-frameworks/MonoAndroid",
"Mono.Android.dll",
SearchOption.AllDirectories));
}
else
{
var assemblies =
Directory.GetFiles(
CecilSearchDirectories.Add(Path.Combine(_referenceAssembliesLocation, "MonoAndroid", "v1.0"));
sdks.AddRange(Directory.GetFiles(
Path.Combine(_referenceAssembliesLocation, "MonoAndroid"),
"Mono.Android.dll",
SearchOption.AllDirectories);
// Pin to a particular framework version https://github.com/reactiveui/ReactiveUI/issues/1517
var latestVersion = assemblies.Last(x => x.Contains("v8.1", StringComparison.InvariantCulture));
Assemblies.Add(latestVersion);
CecilSearchDirectories.Add(Path.GetDirectoryName(latestVersion));
CecilSearchDirectories.Add(Path.Combine(_referenceAssembliesLocation, "MonoAndroid", "v1.0"));
SearchOption.AllDirectories));
}
// Pin to a particular framework version https://github.com/reactiveui/ReactiveUI/issues/1517
var latestVersion = sdks.Last(x => x.Contains(DesiredVersion, StringComparison.InvariantCulture));
Assemblies.Add(latestVersion);
CecilSearchDirectories.Add(Path.GetDirectoryName(latestVersion));
return Task.CompletedTask;
}
}

Просмотреть файл

@ -36,7 +36,7 @@ namespace EventBuilder.Platforms
if (PlatformHelper.IsRunningOnMono())
{
var assembly =
@"/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/Xamarin.TVOS10/Xamarin.TVOS10.dll";
@"/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/Xamarin.TVOS/Xamarin.TVOS.dll";
Assemblies.Add(assembly);
CecilSearchDirectories.Add(Path.GetDirectoryName(assembly));

Просмотреть файл

@ -23,7 +23,9 @@ namespace EventBuilder
internal static class Program
{
private static string _mustacheTemplate = "DefaultTemplate.mustache";
private static string _referenceAssembliesLocation = @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework";
private static string _referenceAssembliesLocation = PlatformHelper.IsRunningOnMono() ?
@"/Library/Frameworks/Libraries/mono" :
@"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework";
public static async Task Main(string[] args)
{
@ -34,7 +36,7 @@ namespace EventBuilder
// allow app to be debugged in visual studio.
if (Debugger.IsAttached)
{
args = "--platform=essentials --output-path=test.txt".Split(' ');
args = "--platform=android --output-path=test.txt".Split(' ');
}
await new Parser(parserSettings => parserSettings.CaseInsensitiveEnumValues = true).ParseArguments<CommandLineOptions>(args).MapResult(

Просмотреть файл

@ -1,6 +1,7 @@
<Project Sdk="MSBuild.Sdk.Extras">
<PropertyGroup>
<TargetFrameworks>uap10.0.16299;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81;tizen40</TargetFrameworks>
<TargetFrameworks>Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81;tizen40</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">$(TargetFrameworks);net461;uap10.0.16299</TargetFrameworks>
<AssemblyName>ReactiveUI.Events</AssemblyName>
<RootNamespace>ReactiveUI.Events</RootNamespace>
<Description>Provides Observable-based events API for common UI controls/eventhandlers. The contents of this package is automatically generated, please target pull-requests to the code generator.</Description>

Просмотреть файл

@ -1,12 +1,16 @@
<Project Sdk="MSBuild.Sdk.Extras">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net461;uap10.0.16299;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81;netcoreapp2.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81;netcoreapp2.0</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">$(TargetFrameworks);net461;uap10.0.16299</TargetFrameworks>
<Description>Fody extension to generate RaisePropertyChange notifications for properties and ObservableAsPropertyHelper properties.</Description>
<!-- Override FodyPackaging since project is named differently than expected -->
<PackageId>ReactiveUI.Fody</PackageId>
<WeaverDirPath>..\$(PackageId)\bin\$(Configuration)\</WeaverDirPath>
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
<!-- Due to fody insisting on having .net 4 classes, we can't pack on non-windows -->
<IsPackable Condition=" '$(OS)' != 'Windows_NT' ">false</IsPackable>
</PropertyGroup>
<ItemGroup>

Просмотреть файл

@ -1,6 +1,9 @@
<Project Sdk="MSBuild.Sdk.Extras">
<PropertyGroup>
<TargetFrameworks>net461;netcoreapp2.0</TargetFrameworks>
<TargetFrameworks>netcoreapp2.0</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">$(TargetFrameworks);net461</TargetFrameworks>
<FodyTargetFramework>netstandard2.0</FodyTargetFramework>
<FodyTargetFramework Condition=" $(TargetFramework.StartsWith('net4')) ">$(TargetFramework)</FodyTargetFramework>
</PropertyGroup>
<ItemGroup>
@ -8,19 +11,23 @@
<ProjectReference Include="..\ReactiveUI.Fody.Helpers\ReactiveUI.Fody.Helpers.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="System.IO.FileSystem.Primitives" Version="4.3.0" />
</ItemGroup>
<ItemGroup>
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>
<ItemGroup>
<WeaverFiles Include="..\ReactiveUI.Fody\bin\$(Configuration)\$(TargetFramework)\ReactiveUI.Fody.*" />
<WeaverFiles Include="..\ReactiveUI.Fody\bin\$(Configuration)\$(FodyTargetFramework)\ReactiveUI.Fody.*" />
</ItemGroup>
<ItemGroup>
<None Include="API\**\*.txt" CopyToOutputDirectory="PreserveNewest" LinkBase="/" />
</ItemGroup>
<Target Name="CopyWeavers" BeforeTargets="BeforeBuild">
<Target Name="CopyWeavers" BeforeTargets="Fody.WeavingTask">
<!-- Fody expects to find weavers in referenced NuGet packages or the Tools directory at the solution level.
Since this is for testing purposes before a NuGet package is created, we'll just use the Tools directory
until the projects are setup as suggested here: https://github.com/Fody/BasicFodyAddin -->

Просмотреть файл

@ -1,6 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="MSBuild.Sdk.Extras">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">$(TargetFrameworks);net461</TargetFrameworks>
<Description>Fody Weavers for ReactiveUI.Fody.</Description>
<IsPackable>False</IsPackable>
</PropertyGroup>

481
src/ReactiveUI.Mac.sln Normal file
Просмотреть файл

@ -0,0 +1,481 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26730.15
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BD9762CF-E104-481C-96A6-26E624B86283}"
ProjectSection(SolutionItems) = preProject
analyzers.ruleset = analyzers.ruleset
analyzers.tests.ruleset = analyzers.tests.ruleset
Directory.build.props = Directory.build.props
Directory.build.targets = Directory.build.targets
global.json = global.json
..\stylecop.json = ..\stylecop.json
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactiveUI", "ReactiveUI\ReactiveUI.csproj", "{464CB812-F99F-401B-BE4C-E8F0515CD19D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactiveUI.AndroidSupport", "ReactiveUI.AndroidSupport\ReactiveUI.AndroidSupport.csproj", "{F5A6E11B-B074-4A1C-B937-267D840E31DF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactiveUI.Testing", "ReactiveUI.Testing\ReactiveUI.Testing.csproj", "{DDF89A7A-5CC9-4243-98E4-462860D5D963}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactiveUI.XamForms", "ReactiveUI.XamForms\ReactiveUI.XamForms.csproj", "{84A9E530-93D7-4108-9887-690127F70AF5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactiveUI.Tests", "ReactiveUI.Tests\ReactiveUI.Tests.csproj", "{2ADE0A50-5012-4341-8F4F-97597C2D6920}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactiveUI.Fody", "ReactiveUI.Fody\ReactiveUI.Fody.csproj", "{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactiveUI.Fody.Helpers", "ReactiveUI.Fody.Helpers\ReactiveUI.Fody.Helpers.csproj", "{20750BB4-36DD-4F8C-B970-D7809810EC98}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactiveUI.Fody.Tests", "ReactiveUI.Fody.Tests\ReactiveUI.Fody.Tests.csproj", "{404B0F3F-7343-4E54-A863-F27B99FE788B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
Ad-Hoc|ARM = Ad-Hoc|ARM
Ad-Hoc|iPhone = Ad-Hoc|iPhone
Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
Ad-Hoc|Mixed Platforms = Ad-Hoc|Mixed Platforms
Ad-Hoc|x64 = Ad-Hoc|x64
Ad-Hoc|x86 = Ad-Hoc|x86
AppStore|Any CPU = AppStore|Any CPU
AppStore|ARM = AppStore|ARM
AppStore|iPhone = AppStore|iPhone
AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
AppStore|Mixed Platforms = AppStore|Mixed Platforms
AppStore|x64 = AppStore|x64
AppStore|x86 = AppStore|x86
Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
Debug|iPhone = Debug|iPhone
Debug|iPhoneSimulator = Debug|iPhoneSimulator
Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|ARM = Release|ARM
Release|iPhone = Release|iPhone
Release|iPhoneSimulator = Release|iPhoneSimulator
Release|Mixed Platforms = Release|Mixed Platforms
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Ad-Hoc|Mixed Platforms.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Ad-Hoc|Mixed Platforms.Build.0 = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.AppStore|Any CPU.Build.0 = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.AppStore|ARM.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.AppStore|iPhone.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.AppStore|Mixed Platforms.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.AppStore|Mixed Platforms.Build.0 = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.AppStore|x64.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.AppStore|x86.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Debug|ARM.ActiveCfg = Debug|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Debug|x64.ActiveCfg = Debug|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Debug|x86.ActiveCfg = Debug|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Release|Any CPU.Build.0 = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Release|ARM.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Release|iPhone.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Release|x64.ActiveCfg = Release|Any CPU
{464CB812-F99F-401B-BE4C-E8F0515CD19D}.Release|x86.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Ad-Hoc|Mixed Platforms.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Ad-Hoc|Mixed Platforms.Build.0 = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.AppStore|Any CPU.Build.0 = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.AppStore|ARM.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.AppStore|iPhone.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.AppStore|Mixed Platforms.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.AppStore|Mixed Platforms.Build.0 = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.AppStore|x64.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.AppStore|x86.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Debug|ARM.ActiveCfg = Debug|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Debug|x64.ActiveCfg = Debug|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Debug|x86.ActiveCfg = Debug|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Release|Any CPU.Build.0 = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Release|ARM.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Release|iPhone.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Release|x64.ActiveCfg = Release|Any CPU
{F5A6E11B-B074-4A1C-B937-267D840E31DF}.Release|x86.ActiveCfg = Release|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Ad-Hoc|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Ad-Hoc|Mixed Platforms.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.AppStore|ARM.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.AppStore|iPhone.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.AppStore|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.AppStore|Mixed Platforms.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.AppStore|x64.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.AppStore|x64.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.AppStore|x86.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.AppStore|x86.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Debug|ARM.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Debug|ARM.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Debug|iPhone.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Debug|x64.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Debug|x64.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Debug|x86.ActiveCfg = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Debug|x86.Build.0 = Debug|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Release|Any CPU.Build.0 = Release|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Release|ARM.ActiveCfg = Release|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Release|ARM.Build.0 = Release|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Release|iPhone.ActiveCfg = Release|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Release|iPhone.Build.0 = Release|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Release|x64.ActiveCfg = Release|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Release|x64.Build.0 = Release|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Release|x86.ActiveCfg = Release|Any CPU
{DDF89A7A-5CC9-4243-98E4-462860D5D963}.Release|x86.Build.0 = Release|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Ad-Hoc|Mixed Platforms.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Ad-Hoc|Mixed Platforms.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.AppStore|ARM.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.AppStore|iPhone.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.AppStore|Mixed Platforms.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.AppStore|Mixed Platforms.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.AppStore|x64.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.AppStore|x64.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.AppStore|x86.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.AppStore|x86.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Debug|ARM.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Debug|ARM.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Debug|iPhone.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Debug|x64.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Debug|x64.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Debug|x86.ActiveCfg = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Debug|x86.Build.0 = Debug|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Release|Any CPU.Build.0 = Release|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Release|ARM.ActiveCfg = Release|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Release|ARM.Build.0 = Release|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Release|iPhone.ActiveCfg = Release|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Release|iPhone.Build.0 = Release|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Release|x64.ActiveCfg = Release|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Release|x64.Build.0 = Release|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Release|x86.ActiveCfg = Release|Any CPU
{84A9E530-93D7-4108-9887-690127F70AF5}.Release|x86.Build.0 = Release|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Ad-Hoc|Mixed Platforms.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Ad-Hoc|Mixed Platforms.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.AppStore|ARM.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.AppStore|iPhone.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.AppStore|Mixed Platforms.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.AppStore|Mixed Platforms.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.AppStore|x64.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.AppStore|x64.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.AppStore|x86.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.AppStore|x86.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Debug|ARM.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Debug|ARM.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Debug|iPhone.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Debug|x64.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Debug|x64.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Debug|x86.ActiveCfg = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Debug|x86.Build.0 = Debug|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Release|Any CPU.Build.0 = Release|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Release|ARM.ActiveCfg = Release|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Release|ARM.Build.0 = Release|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Release|iPhone.ActiveCfg = Release|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Release|iPhone.Build.0 = Release|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Release|x64.ActiveCfg = Release|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Release|x64.Build.0 = Release|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Release|x86.ActiveCfg = Release|Any CPU
{2ADE0A50-5012-4341-8F4F-97597C2D6920}.Release|x86.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Ad-Hoc|Mixed Platforms.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Ad-Hoc|Mixed Platforms.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Ad-Hoc|x64.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Ad-Hoc|x86.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.AppStore|Any CPU.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.AppStore|ARM.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.AppStore|ARM.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.AppStore|iPhone.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.AppStore|iPhone.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.AppStore|Mixed Platforms.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.AppStore|Mixed Platforms.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.AppStore|x64.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.AppStore|x64.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.AppStore|x86.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.AppStore|x86.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Debug|ARM.ActiveCfg = Debug|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Debug|ARM.Build.0 = Debug|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Debug|iPhone.Build.0 = Debug|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Debug|x64.ActiveCfg = Debug|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Debug|x64.Build.0 = Debug|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Debug|x86.ActiveCfg = Debug|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Debug|x86.Build.0 = Debug|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Release|Any CPU.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Release|ARM.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Release|ARM.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Release|iPhone.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Release|iPhone.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Release|x64.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Release|x64.Build.0 = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Release|x86.ActiveCfg = Release|Any CPU
{7DE43BB9-5AC8-446A-8D8B-88C9201D802E}.Release|x86.Build.0 = Release|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Ad-Hoc|Mixed Platforms.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Ad-Hoc|Mixed Platforms.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.AppStore|ARM.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.AppStore|iPhone.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.AppStore|Mixed Platforms.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.AppStore|Mixed Platforms.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.AppStore|x64.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.AppStore|x64.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.AppStore|x86.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.AppStore|x86.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Debug|Any CPU.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Debug|ARM.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Debug|ARM.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Debug|iPhone.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Debug|x64.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Debug|x64.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Debug|x86.ActiveCfg = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Debug|x86.Build.0 = Debug|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Release|Any CPU.ActiveCfg = Release|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Release|Any CPU.Build.0 = Release|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Release|ARM.ActiveCfg = Release|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Release|ARM.Build.0 = Release|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Release|iPhone.ActiveCfg = Release|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Release|iPhone.Build.0 = Release|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Release|x64.ActiveCfg = Release|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Release|x64.Build.0 = Release|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Release|x86.ActiveCfg = Release|Any CPU
{20750BB4-36DD-4F8C-B970-D7809810EC98}.Release|x86.Build.0 = Release|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Ad-Hoc|Mixed Platforms.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Ad-Hoc|Mixed Platforms.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.AppStore|ARM.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.AppStore|iPhone.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.AppStore|Mixed Platforms.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.AppStore|Mixed Platforms.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.AppStore|x64.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.AppStore|x64.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.AppStore|x86.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.AppStore|x86.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Debug|ARM.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Debug|ARM.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Debug|iPhone.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Debug|x64.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Debug|x64.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Debug|x86.ActiveCfg = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Debug|x86.Build.0 = Debug|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Release|Any CPU.Build.0 = Release|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Release|ARM.ActiveCfg = Release|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Release|ARM.Build.0 = Release|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Release|iPhone.ActiveCfg = Release|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Release|iPhone.Build.0 = Release|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Release|x64.ActiveCfg = Release|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Release|x64.Build.0 = Release|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Release|x86.ActiveCfg = Release|Any CPU
{404B0F3F-7343-4E54-A863-F27B99FE788B}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9326B58C-0AD3-4527-B3F4-86B54673C62E}
EndGlobalSection
GlobalSection(TestCaseManagementSettings) = postSolution
CategoryFile = ReactiveUI.vsmdi
EndGlobalSection
EndGlobal

Просмотреть файл

@ -1,6 +1,7 @@
<Project Sdk="MSBuild.Sdk.Extras">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netcoreapp2.0;net461;uap10.0.16299;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81</TargetFrameworks>
<TargetFrameworks>netstandard2.0;netcoreapp2.0;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">$(TargetFrameworks);net461;uap10.0.16299</TargetFrameworks>
<AssemblyName>ReactiveUI.Testing</AssemblyName>
<RootNamespace>ReactiveUI.Testing</RootNamespace>
<Description>A library to aid in writing unit tests for ReactiveUI projects</Description>

Просмотреть файл

@ -1,7 +1,8 @@
<Project Sdk="MSBuild.Sdk.Extras">
<PropertyGroup>
<TargetFrameworks>net461;netcoreapp2.0;uap10.0.16299</TargetFrameworks>
<TargetFrameworks>netcoreapp2.0</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">$(TargetFrameworks);net461;uap10.0.16299</TargetFrameworks>
</PropertyGroup>
<PropertyGroup Condition=" $(TargetFramework.StartsWith('uap')) ">
@ -9,7 +10,10 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\ReactiveUI.Blend\ReactiveUI.Blend.csproj" />
<PackageReference Include="System.IO.FileSystem.Primitives" Version="4.3.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ReactiveUI.Testing\ReactiveUI.Testing.csproj" />
<ProjectReference Include="..\ReactiveUI\ReactiveUI.csproj" />
</ItemGroup>
@ -22,6 +26,7 @@
<ItemGroup Condition=" $(TargetFramework.StartsWith('net4'))">
<ProjectReference Include="..\ReactiveUI.Winforms\ReactiveUI.Winforms.csproj" />
<ProjectReference Include="..\ReactiveUI.Wpf\ReactiveUI.Wpf.csproj" />
<ProjectReference Include="..\ReactiveUI.Blend\ReactiveUI.Blend.csproj" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
@ -38,6 +43,8 @@
</ItemGroup>
<ItemGroup Condition=" $(TargetFramework.StartsWith('uap')) ">
<ProjectReference Include="..\ReactiveUI.Blend\ReactiveUI.Blend.csproj" />
<PackageReference Include="xunit.runner.devices" Version="2.5.25" />
<Compile Include="Platforms\common-gui\**\*.cs" />
@ -49,10 +56,6 @@
<Compile Update="**\*.xaml.cs" DependentUpon="%(Filename)" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="System.IO.FileSystem.Primitives" Version="4.3.0" />
</ItemGroup>
<ItemGroup>
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>

Просмотреть файл

@ -4,8 +4,6 @@ VisualStudioVersion = 15.0.26730.15
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BD9762CF-E104-481C-96A6-26E624B86283}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
..\.vsts-ci.yml = ..\.vsts-ci.yml
analyzers.ruleset = analyzers.ruleset
analyzers.tests.ruleset = analyzers.tests.ruleset
Directory.build.props = Directory.build.props

Просмотреть файл

@ -1,6 +1,7 @@
<Project Sdk="MSBuild.Sdk.Extras">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net461;uap10.0.16299;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81;netcoreapp2.0;tizen40</TargetFrameworks>
<TargetFrameworks>netstandard2.0;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81;netcoreapp2.0;tizen40</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">$(TargetFrameworks);net461;uap10.0.16299</TargetFrameworks>
<AssemblyName>ReactiveUI</AssemblyName>
<RootNamespace>ReactiveUI</RootNamespace>
<Description>A MVVM framework that integrates with the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. Supports Xamarin.iOS, Xamarin.Android, Xamarin.Mac, Xamarin Forms, WPF, Windows Forms, Windows Phone 8.1, Windows Store and Universal Windows Platform (UWP).</Description>
@ -11,7 +12,6 @@
<Compile Remove="Platforms\**\*.cs" />
<None Include="Platforms\**\*.cs" />
<PackageReference Include="System.Reactive" Version="4.0.0" />
<PackageReference Include="System.Reactive.Compatibility" Version="4.0.0" />
<PackageReference Include="Splat" Version="6.*" />
<PackageReference Include="DynamicData" Version="6.7.*" />
</ItemGroup>