diff --git a/devTools/FC.targets b/devTools/FC.targets
index e379da0de255cc30b7a6a1303a76cc65e286729a..55d1d19f4bb25c18e409c1df30054d429beecb7e 100644
--- a/devTools/FC.targets
+++ b/devTools/FC.targets
@@ -47,6 +47,40 @@
 	</Task>
 	</UsingTask>
 
+	<!-- https://stackoverflow.com/questions/3524317/regex-to-strip-line-comments-from-c-sharp/3524689#3524689 -->
+	<UsingTask TaskName="StripComments" TaskFactory="RoslynCodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
+	<ParameterGroup>
+		<InputFilename ParameterType="System.String" Required="true" />
+		<OutputFilename ParameterType="System.String" Required="true" />
+	</ParameterGroup>
+	<Task>
+		<Using Namespace="System" />
+		<Using Namespace="System.IO" />
+		<Using Namespace="System.Text.RegularExpressions" />
+		<Code Type="Fragment" Language="cs">
+		<![CDATA[
+				var blockComments = @"/\*(.*?)\*/";
+				var lineComments = @"//(.*?)\r?\n";
+				var strings = @"""((\\[^\n]|[^""\n])*)""";
+				var verbatimStrings = @"@(""[^""]*"")+";
+				File.WriteAllText(
+					OutputFilename,
+					Regex.Replace(File.ReadAllText(InputFilename),
+						blockComments + "|" + lineComments + "|" + strings + "|" + verbatimStrings,
+						me => {
+							if (me.Value.StartsWith("/*") || me.Value.StartsWith("//"))
+								return me.Value.StartsWith("//") ? "\n" : "";
+							// Keep the literal strings
+							return me.Value;
+						},
+						RegexOptions.Singleline
+					)
+				);
+			]]>
+		</Code>
+	</Task>
+	</UsingTask>
+
 	<UsingTask TaskName="GetToolPath" TaskFactory="RoslynCodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll" >
 		<ParameterGroup>
 			<ToolName Required="true" />
diff --git a/fc-pregmod.proj b/fc-pregmod.proj
index c2e94f8547ede5f390bcbd9c18ec9c98af211a37..c9b9ea7d66fcd9ef2200e45a7c115a0993c415f3 100644
--- a/fc-pregmod.proj
+++ b/fc-pregmod.proj
@@ -89,7 +89,11 @@
 		<ItemGroup>
 			<jsFiles Include=".\js\**\*.js;.\src\**\*.js" Exclude=".\src\art\assistantArt.js"/> <!-- will be sorted aphabetically -->
 		</ItemGroup>
-		<ConcatFiles Inputs="@(jsFiles)" BaseDir="$(MSBuildProjectDirectory)" Output="$(MSBuildProjectDirectory)\devNotes\twine JS.txt"/>
+		<ConcatFiles Inputs="@(jsFiles)" BaseDir="$(MSBuildProjectDirectory)" Output="$(MSBuildProjectDirectory)\devNotes\twine JS.raw"/>
+		<StripComments
+			InputFilename="$(MSBuildProjectDirectory)\devNotes\twine JS.raw"
+			OutputFilename="$(MSBuildProjectDirectory)\devNotes\twine JS.txt"
+		/>
 	</Target>
 
 	<Target Name="Twine" DependsOnTargets="TwineCSS;TwineJS"/>