diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..0d83404
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,35 @@
+name: Continuous Integration Pipeline
+
+on: [push, pull_request]
+
+jobs:
+ build:
+
+ runs-on: windows-latest
+ strategy:
+ matrix:
+ dotnet: [ '5.0.x' ]
+ runtime: [ 'win-x64', 'win-x86' ]
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: ${{ matrix.dotnet }}
+
+ - name: Restore dependencies
+ run: dotnet restore
+
+ - name: Build
+ run: dotnet build --no-restore
+
+ - name: Publish
+ run: dotnet publish --configuration Release --runtime ${{ matrix.runtime }} --output ./publish -p:PublishReadyToRun=true -p:PublishSingleFile=true --self-contained true -p:DebugType=None
+
+ - name: Upload Build Artifacts
+ uses: actions/upload-artifact@v2
+ with:
+ name: BabySmash-${{ matrix.runtime }}-${{ matrix.dotnet }}
+ path: ./publish
+ if-no-files-found: error
diff --git a/BabySmash.csproj b/BabySmash.csproj
index 7e9a1f2..3ec3aad 100644
--- a/BabySmash.csproj
+++ b/BabySmash.csproj
@@ -4,11 +4,9 @@
WinExe
E4355A6B46BE61300D217B56C346651E03BEB47F
private.pfx
- true
false
false
App.ico
- C:\Users\Scott\Desktop\babysmashWithEric\
true
Disk
true
@@ -22,25 +20,18 @@
http://feedback.babysmash.com
BabySmash!
BabySmash
- publish.htm
99
1.1.0.%2a
false
true
true
- false
true
true
- AllRules.ruleset
-
- 3.5
-
+
-
- 3.5
-
+
@@ -56,38 +47,6 @@
Always
-
-
- False
- .NET Framework Client Profile
- false
-
-
- False
- .NET Framework 2.0 %28x86%29
- false
-
-
- False
- .NET Framework 3.0 %28x86%29
- false
-
-
- False
- .NET Framework 3.5
- false
-
-
- False
- .NET Framework 3.5 SP1
- true
-
-
- False
- Windows Installer 4.5
- true
-
-
diff --git a/Controller.cs b/Controller.cs
index c6c32fc..6523355 100644
--- a/Controller.cs
+++ b/Controller.cs
@@ -105,7 +105,6 @@ public void Launch()
Win32Audio.PlayWavResourceYield("EditedJackPlaysBabySmash.wav");
string[] args = Environment.GetCommandLineArgs();
- string ext = System.IO.Path.GetExtension(System.Reflection.Assembly.GetExecutingAssembly().CodeBase);
#if !false
timer.Start();
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
deleted file mode 100644
index bc163da..0000000
--- a/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-using System.Windows;
-
-[assembly: AssemblyTitle("BabySmash")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Scott Hanselman")]
-[assembly: AssemblyProduct("BabySmash")]
-[assembly: AssemblyCopyright("Copyright ©2008 Scott Hanselman")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-[assembly: ComVisible(false)]
-[assembly: AssemblyVersion("1.0.2.0")]
-
-//In order to begin building localizable applications, set
-//CultureYouAreCodingWith in your .csproj file
-//inside a . For example, if you are using US english
-//in your source files, set the to en-US. Then uncomment
-//the NeutralResourceLanguage attribute below. Update the "en-US" in
-//the line below to match the UICulture setting in the project file.
-
-//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
-
-[assembly: ThemeInfo(
- ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
- //(used if a resource is not found in the page,
- // or application resource dictionaries)
- ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
- //(used if a resource is not found in the page,
- // app, or any theme specific resource dictionaries)
- )]
diff --git a/README.md b/README.md
index 2f2176e..7feb5ee 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,16 @@
BabySmash
=========
+ - [Overview](#overview)
+ - [Enhancements](#enhancements)
+ - [AutoHotkey](#autohotkey)
+ - [Local Development](#local-development)
+ - [Prerequisites](#prerequisites)
+ - [Compile](#compile)
+ - [Debug](#debug)
+ - [Publish](#publish)
+ - [Custom Words](#custom-words)
+
## Overview
The BabySmash game for small kids.
@@ -29,3 +39,34 @@ Used in conjunction with a tool like AutoHotkey, you can essentially create a "b
* Try out your new hotkey to make sure it works. If not, go back to 'Edit This Script' and try again.
For more advanced customization, see also: http://ahkscript.org/docs/Tutorial.htm
+
+## Local Development
+
+### Prerequisites
+
+- [.NET 5.0](https://dotnet.microsoft.com/download/dotnet/5.0)
+
+### Compile
+
+The BabySmash solution can be built by running the .NET CLI command ```dotnet build``` in the root directory or alternatively via Visual Studio.
+
+### Debug
+
+Developers can run the BabySmash code by running the .NET CLI command ```dotnet run``` in the root directory or alternatively via Visual Studio.
+
+### Publish
+
+Build artifacts are included in the [```Continuous Integration Pipeline``` GitHub Action](./.github/workflows/ci.yml). View the summary of a successful build in order to retrieve uploaded artifacts.
+
+In order to run a local publish run the following command from the root directory
+```
+dotnet publish --configuration Release --runtime ${{ matrix.runtime }} --output ./publish -p:PublishReadyToRun=true -p:PublishSingleFile=true --self-contained true
+```
+
+If you encounter issues in a locally published BabySmash executable, there are logs published to the Windows Event Viewer under Windows Logs > Application.
+
+## Custom Words
+
+Along with any deployment of BabySmash.exe is a [```Words.txt``` file](./Words.txt). This file determines what combination of letters is constructed into words for the application smasher. Simply adjust the file by adding words on new lines to add to the library.
+
+There are additionally custom regional definitions in [./Resources/Strings/](./Resources/Strings/) which may be contributed to to adjust the words used for speaking shape and color names.
diff --git a/WordFinder.cs b/WordFinder.cs
index f9c1a01..b39f4e7 100644
--- a/WordFinder.cs
+++ b/WordFinder.cs
@@ -23,7 +23,7 @@ public class WordFinder
public WordFinder(string wordsFilePath)
{
// File path provided should be relative to our running location, so combine for full path safety.
- string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
+ string dir = Path.GetDirectoryName(AppContext.BaseDirectory);
wordsFilePath = Path.Combine(dir, wordsFilePath);
// Bail if the source word file is not found.
diff --git a/Words.txt b/Words.txt
index be027f1..6dd62fb 100644
--- a/Words.txt
+++ b/Words.txt
@@ -32,6 +32,7 @@ AGAIN
AGAINST
AGO
AIDEN
+AIMEE
AIR
AIRED
AIRING