From f3b921883a71587c56b5baaee068f44e1b404ef7 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Fri, 25 Jan 2019 12:54:44 -0800 Subject: [PATCH 1/7] housekeeping: allow for vs4mac copilation --- azure-pipelines-tests.yml | 114 +++-- build.cake | 351 +++++++------ build.config | 2 + build.sh | 119 ++--- src/Directory.build.props | 4 + src/EventBuilder/EventBuilder.csproj | 1 + src/EventBuilder/PlatformHelper.cs | 3 +- src/EventBuilder/Platforms/tvOS.cs | 2 +- src/EventBuilder/Program.cs | 6 +- .../ReactiveUI.Events.csproj | 3 +- .../ReactiveUI.Fody.Helpers.csproj | 6 +- .../ReactiveUI.Fody.Tests.csproj | 11 +- src/ReactiveUI.Fody/ReactiveUI.Fody.csproj | 5 +- src/ReactiveUI.Mac.sln | 481 ++++++++++++++++++ .../ReactiveUI.Testing.csproj | 3 +- src/ReactiveUI.Tests/ReactiveUI.Tests.csproj | 15 +- src/ReactiveUI.sln | 6 +- src/ReactiveUI/ReactiveUI.csproj | 4 +- 18 files changed, 806 insertions(+), 330 deletions(-) create mode 100644 build.config create mode 100644 src/ReactiveUI.Mac.sln diff --git a/azure-pipelines-tests.yml b/azure-pipelines-tests.yml index f280a6a4ce..8b01cb3f9a 100644 --- a/azure-pipelines-tests.yml +++ b/azure-pipelines-tests.yml @@ -8,46 +8,74 @@ pr: - rel/* - preview/* -pool: - vmImage: vs2017-win2016 - -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: DotNetCoreCLI@2 - inputs: - command: custom - custom: tool - arguments: install --tool-path . nbgv - displayName: Install NBGV tool - -- script: nbgv cloud - displayName: Set Version - -- 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: PublishBuildArtifacts@1 - displayName: Publish Test Data - inputs: - pathToPublish: '$(build.artifactstagingdirectory)\Tests' - artifactType: container - artifactName: Tests \ No newline at end of file +jobs: +- job: Windows + pool: + name: Default + + 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\\Community\\Common7\\Tools\\VsDevCmd.bat" + arguments: -no_logo + modifyEnvironment: true + displayName: Setup Environment Variables + + - 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: 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' + +- 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' diff --git a/build.cake b/build.cake index d7de061ee5..a690e5b398 100644 --- a/build.cake +++ b/build.cake @@ -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 +{ + "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 +{ + "ReactiveUI.Tests", +}; + +if (IsRunningOnWindows()) +{ + packageTestWhitelist.AddRange(new[] + { + "ReactiveUI.Fody.Tests" + }); +} + +var coverageTestFrameworks = new List +{ + "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."); - } - - Information("Building version {0} of ReactiveUI.", informationalVersion); + StartProcess(Context.Tools.Resolve("nbgv*").ToString(), "cloud"); - 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 Build = (solution, packageOutputPath) => +Action Build = (solution, packageOutputPath, doNotOptimise) => { Information("Building {0} using {1}", solution, msBuildPath); @@ -184,6 +210,11 @@ Action 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 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 generate = (string platform, string directory) => + foreach (var eventGenerator in eventGenerators) { + var (platform, directory) = eventGenerator; + var settings = new DotNetCoreExecuteSettings { WorkingDirectory = workingDirectory, @@ -227,106 +257,77 @@ 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[] - { - "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); - } + CleanDirectories($"./src/**/obj/{configuration}"); + CleanDirectories($"./src/**/bin/{configuration}"); - 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) + foreach (var packageName 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(), - }; - - DotNetCoreTest(projectName, testSettings); - } + Information($"Performing coverage tests on {packageName} on framework {testFramework}"); + + 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") + //.AppendSwitchQuoted("--merge-with", testCoverageOutputFile.ToString()) + .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 +341,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 +375,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 +396,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 +417,4 @@ Task("Default") // EXECUTION ////////////////////////////////////////////////////////////////////// -RunTarget(target); +RunTarget(target); \ No newline at end of file diff --git a/build.config b/build.config new file mode 100644 index 0000000000..35f6513467 --- /dev/null +++ b/build.config @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +CAKE_VERSION=0.32.1 \ No newline at end of file diff --git a/build.sh b/build.sh index 1cda2241cd..8c2183fdd4 100755 --- a/build.sh +++ b/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." - exit 1 +########################################################################### +# 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 -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." + # 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 -# 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 \ No newline at end of file +(exec "$CAKE_EXE" --bootstrap) && (exec "$CAKE_EXE" "$@") \ No newline at end of file diff --git a/src/Directory.build.props b/src/Directory.build.props index 983bcad946..84ceab5b22 100644 --- a/src/Directory.build.props +++ b/src/Directory.build.props @@ -16,6 +16,10 @@ $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb $(MSBuildThisFileDirectory)analyzers.ruleset + + + false + $(EnableSourceLink) diff --git a/src/EventBuilder/EventBuilder.csproj b/src/EventBuilder/EventBuilder.csproj index 4acc36ef73..f700cbf9f8 100644 --- a/src/EventBuilder/EventBuilder.csproj +++ b/src/EventBuilder/EventBuilder.csproj @@ -5,6 +5,7 @@ EventBuilder EventBuilder latest + false diff --git a/src/EventBuilder/PlatformHelper.cs b/src/EventBuilder/PlatformHelper.cs index a9a3a154a4..e8e8dede5d 100644 --- a/src/EventBuilder/PlatformHelper.cs +++ b/src/EventBuilder/PlatformHelper.cs @@ -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 /// public static class PlatformHelper { - private static readonly Lazy _IsRunningOnMono = new Lazy(() => Type.GetType("Mono.Runtime") != null); + private static readonly Lazy _IsRunningOnMono = new Lazy(() => !RuntimeInformation.IsOSPlatform(OSPlatform.Windows)); /// /// Determines whether the platform is running on mono. diff --git a/src/EventBuilder/Platforms/tvOS.cs b/src/EventBuilder/Platforms/tvOS.cs index 2e6464ddab..fb2e821ce6 100644 --- a/src/EventBuilder/Platforms/tvOS.cs +++ b/src/EventBuilder/Platforms/tvOS.cs @@ -36,7 +36,7 @@ public override Task Extract() 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)); diff --git a/src/EventBuilder/Program.cs b/src/EventBuilder/Program.cs index af656c9adb..46c524883b 100644 --- a/src/EventBuilder/Program.cs +++ b/src/EventBuilder/Program.cs @@ -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 @@ public static async Task Main(string[] args) // 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(args).MapResult( diff --git a/src/ReactiveUI.Events/ReactiveUI.Events.csproj b/src/ReactiveUI.Events/ReactiveUI.Events.csproj index 5eca28ca08..aae5109996 100644 --- a/src/ReactiveUI.Events/ReactiveUI.Events.csproj +++ b/src/ReactiveUI.Events/ReactiveUI.Events.csproj @@ -1,6 +1,7 @@  - uap10.0.16299;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81;tizen40 + Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81;tizen40 + $(TargetFrameworks);net461;uap10.0.16299 ReactiveUI.Events ReactiveUI.Events 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. diff --git a/src/ReactiveUI.Fody.Helpers/ReactiveUI.Fody.Helpers.csproj b/src/ReactiveUI.Fody.Helpers/ReactiveUI.Fody.Helpers.csproj index 1f86de5026..81beeb4e40 100644 --- a/src/ReactiveUI.Fody.Helpers/ReactiveUI.Fody.Helpers.csproj +++ b/src/ReactiveUI.Fody.Helpers/ReactiveUI.Fody.Helpers.csproj @@ -1,12 +1,16 @@  - netstandard2.0;net461;uap10.0.16299;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81;netcoreapp2.0 + netstandard2.0;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81;netcoreapp2.0 + $(TargetFrameworks);net461;uap10.0.16299 Fody extension to generate RaisePropertyChange notifications for properties and ObservableAsPropertyHelper properties. ReactiveUI.Fody ..\$(PackageId)\bin\$(Configuration)\ False + + + false diff --git a/src/ReactiveUI.Fody.Tests/ReactiveUI.Fody.Tests.csproj b/src/ReactiveUI.Fody.Tests/ReactiveUI.Fody.Tests.csproj index 4be1806f2d..61d505542a 100644 --- a/src/ReactiveUI.Fody.Tests/ReactiveUI.Fody.Tests.csproj +++ b/src/ReactiveUI.Fody.Tests/ReactiveUI.Fody.Tests.csproj @@ -1,6 +1,9 @@  - net461;netcoreapp2.0 + netcoreapp2.0 + $(TargetFrameworks);net461 + netstandard2.0 + $(TargetFramework) @@ -8,12 +11,16 @@ + + + + - + diff --git a/src/ReactiveUI.Fody/ReactiveUI.Fody.csproj b/src/ReactiveUI.Fody/ReactiveUI.Fody.csproj index 4aa843ba38..7710f53b12 100644 --- a/src/ReactiveUI.Fody/ReactiveUI.Fody.csproj +++ b/src/ReactiveUI.Fody/ReactiveUI.Fody.csproj @@ -1,6 +1,7 @@ - + - netstandard2.0;net461 + netstandard2.0 + $(TargetFrameworks);net461 Fody Weavers for ReactiveUI.Fody. False diff --git a/src/ReactiveUI.Mac.sln b/src/ReactiveUI.Mac.sln new file mode 100644 index 0000000000..22ef441963 --- /dev/null +++ b/src/ReactiveUI.Mac.sln @@ -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 diff --git a/src/ReactiveUI.Testing/ReactiveUI.Testing.csproj b/src/ReactiveUI.Testing/ReactiveUI.Testing.csproj index dd9e710c8d..feb38f6b95 100644 --- a/src/ReactiveUI.Testing/ReactiveUI.Testing.csproj +++ b/src/ReactiveUI.Testing/ReactiveUI.Testing.csproj @@ -1,6 +1,7 @@  - netstandard2.0;netcoreapp2.0;net461;uap10.0.16299;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81 + netstandard2.0;netcoreapp2.0;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81 + $(TargetFrameworks);net461;uap10.0.16299 ReactiveUI.Testing ReactiveUI.Testing A library to aid in writing unit tests for ReactiveUI projects diff --git a/src/ReactiveUI.Tests/ReactiveUI.Tests.csproj b/src/ReactiveUI.Tests/ReactiveUI.Tests.csproj index 0de8591fcc..05fff3db72 100644 --- a/src/ReactiveUI.Tests/ReactiveUI.Tests.csproj +++ b/src/ReactiveUI.Tests/ReactiveUI.Tests.csproj @@ -1,7 +1,8 @@  - net461;netcoreapp2.0;uap10.0.16299 + netcoreapp2.0 + $(TargetFrameworks);net461;uap10.0.16299 @@ -9,7 +10,10 @@ - + + + + @@ -22,6 +26,7 @@ + @@ -38,6 +43,8 @@ + + @@ -49,10 +56,6 @@ - - - - diff --git a/src/ReactiveUI.sln b/src/ReactiveUI.sln index 1ef4b4d2ed..44417af41f 100644 --- a/src/ReactiveUI.sln +++ b/src/ReactiveUI.sln @@ -1,11 +1,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26730.15 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.28516.95 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 diff --git a/src/ReactiveUI/ReactiveUI.csproj b/src/ReactiveUI/ReactiveUI.csproj index 156f8ce673..6010bde37f 100644 --- a/src/ReactiveUI/ReactiveUI.csproj +++ b/src/ReactiveUI/ReactiveUI.csproj @@ -1,6 +1,7 @@  - netstandard2.0;net461;uap10.0.16299;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81;netcoreapp2.0;tizen40 + netstandard2.0;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid81;netcoreapp2.0;tizen40 + $(TargetFrameworks);net461;uap10.0.16299 ReactiveUI ReactiveUI 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). @@ -11,7 +12,6 @@ - From 9e214e25a5356940849c43c6166252fd29f8b1f9 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Tue, 29 Jan 2019 18:20:45 -0800 Subject: [PATCH 2/7] updated to use better target for fody --- build.cake | 5 ----- src/ReactiveUI.Fody.Tests/ReactiveUI.Fody.Tests.csproj | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/build.cake b/build.cake index a690e5b398..4b1196f18c 100644 --- a/build.cake +++ b/build.cake @@ -282,10 +282,6 @@ Task("Build") Task("RunUnitTests") .Does(() => { - // Clean the directories since we'll need to re-generate the debug type. - CleanDirectories($"./src/**/obj/{configuration}"); - CleanDirectories($"./src/**/bin/{configuration}"); - foreach (var packageName in packageTestWhitelist) { var projectName = $"./src/{packageName}/{packageName}.csproj"; @@ -308,7 +304,6 @@ Task("RunUnitTests") .AppendSwitch("--exclude", "[*]*ThisAssembly*") .AppendSwitch("--exclude-by-file", "*ApprovalTests*") .AppendSwitchQuoted("--output", testsArtifactDirectory + $"testcoverage-{packageName}-{testFramework}.xml") - //.AppendSwitchQuoted("--merge-with", testCoverageOutputFile.ToString()) .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))}") diff --git a/src/ReactiveUI.Fody.Tests/ReactiveUI.Fody.Tests.csproj b/src/ReactiveUI.Fody.Tests/ReactiveUI.Fody.Tests.csproj index 61d505542a..60b5891d24 100644 --- a/src/ReactiveUI.Fody.Tests/ReactiveUI.Fody.Tests.csproj +++ b/src/ReactiveUI.Fody.Tests/ReactiveUI.Fody.Tests.csproj @@ -27,7 +27,7 @@ - + From df1518a7aebdf2db66acc10b1375727ee26bea36 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Tue, 29 Jan 2019 18:47:57 -0800 Subject: [PATCH 3/7] Update the main CI to do mac as well --- azure-pipelines.yml | 117 ++++++++++++++++++++++++-------------------- 1 file changed, 64 insertions(+), 53 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index c7484b8ebb..93337f900c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -8,65 +8,76 @@ 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 \ No newline at end of file +- job: Mac + pool: + vmImage: 'macOS-10.13' + + steps: + - task: DotNetCoreInstaller@0 + displayName: Install Dot Net Core v2.2.1 + inputs: + version: '2.2.103' + + - powershell: .\build.ps1 --target=Build + displayName: Build From b23dcee3522ffeffc9cffbffe534f388afbe9c87 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Tue, 29 Jan 2019 18:59:45 -0800 Subject: [PATCH 4/7] fix syntax issues in azure yaml --- azure-pipelines.yml | 117 ++++++++++++++++++++++---------------------- 1 file changed, 58 insertions(+), 59 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 93337f900c..950c6d5a4b 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -10,74 +10,73 @@ pr: jobs: - job: Windows - pool: - vmImage: vs2017-win2016 - steps: - - task: DotNetCoreInstaller@0 - displayName: Install Dot Net Core v2.2.1 - inputs: - version: '2.2.103' + pool: + vmImage: vs2017-win2016 + 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) + 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: + pool: + vmImage: 'macOS-10.13' + steps: + - task: DotNetCoreInstaller@0 + displayName: Install Dot Net Core v2.2.1 + inputs: version: '2.2.103' - - powershell: .\build.ps1 --target=Build - displayName: Build + - bash: ./build.sh --target=Build + displayName: Build \ No newline at end of file From ff4f832393a648c436020b5267dbad191f3a6306 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Tue, 29 Jan 2019 19:03:43 -0800 Subject: [PATCH 5/7] go back to old version of visual studio --- src/ReactiveUI.sln | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ReactiveUI.sln b/src/ReactiveUI.sln index 44417af41f..1157a620ad 100644 --- a/src/ReactiveUI.sln +++ b/src/ReactiveUI.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.28516.95 +# 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 From c2fdb78bf4675c3c5cff7864e3983f2c61b08545 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Thu, 31 Jan 2019 13:48:22 -0800 Subject: [PATCH 6/7] trying to get the proper mack version to compile --- src/EventBuilder/Platforms/Android.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/EventBuilder/Platforms/Android.cs b/src/EventBuilder/Platforms/Android.cs index ceede94136..9576331d95 100644 --- a/src/EventBuilder/Platforms/Android.cs +++ b/src/EventBuilder/Platforms/Android.cs @@ -42,7 +42,8 @@ public override Task Extract() "Mono.Android.dll", SearchOption.AllDirectories); - var latestVersion = sdks.Last(); + // 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)); From ca96b476b6cdd8777cbee436569654b41f40ffd6 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Thu, 31 Jan 2019 13:57:38 -0800 Subject: [PATCH 7/7] cleanup android generation --- src/EventBuilder/Platforms/Android.cs | 38 ++++++++++++--------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/src/EventBuilder/Platforms/Android.cs b/src/EventBuilder/Platforms/Android.cs index 9576331d95..c2285ab2c6 100644 --- a/src/EventBuilder/Platforms/Android.cs +++ b/src/EventBuilder/Platforms/Android.cs @@ -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 /// public class Android : BasePlatform { + private const string DesiredVersion = "v8.1"; + private readonly string _referenceAssembliesLocation; /// @@ -34,38 +37,31 @@ public Android(string referenceAssembliesLocation) /// public override Task Extract() { + var sdks = new List(); if (PlatformHelper.IsRunningOnMono()) { - var sdks = - Directory.GetFiles( - @"/Library/Frameworks/Xamarin.Android.framework/Libraries/xbuild-frameworks/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( "/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; } }