[tasque/transition: 59/213] Change GlobalDefines.cs build



commit a3e96136951cf5bab91449562400432643511acd
Author: Antonius Riha <antoniusriha gmail com>
Date:   Fri Jun 15 12:03:11 2012 +0200

    Change GlobalDefines.cs build
    
    GlobalDefines.cs holds information like version number and license about Tasque. It is generated by a special MSBuild task ("SetDataAtBuildTime") from GlobalDefines.cs.in after the build of build.csproj (which builds the SetDataAtBuildTime MSBuild task). GlobalDefines.cs is then linked to by the various .csproj files of the solution which include it in their build.
    
    * build.mdproj: has been renamed to build.csproj
    * build.csproj:
    	- removed all stuff related to MSBuild.Community.Tasks, which is not needed anymore
    	- added build configuration to build SetDataAtBuildTime.cs
    
    * tasque.sln:
    	- reflect build proj changes
    
    * .gitignore:
    	- reflect removal of MSBuild.Community.Tasks
    	- add ignore of .mdb files
    
    * MSBuild.Community.Tasks.dll and MSBuild.Community.Tasks.Targets: Those are not needed anymore, since everything is now handled by a custom self-written task
    
    * GlobalDefines.cs.in and GlobalDefines.cs:
    	- include some more data about the project

 .gitignore                                |    2 +-
 build/GlobalDefines.cs                    |   54 ++++++--
 build/GlobalDefines.cs.in                 |   13 ++-
 build/SetDataAtBuildTime.cs               |  211 +++++++++++++++++++++++++++++
 build/{build.mdproj => build.csproj}      |  122 +++++++++++++----
 build/lib/MSBuild.Community.Tasks.Targets |  147 --------------------
 build/lib/MSBuild.Community.Tasks.dll     |  Bin 630272 -> 0 bytes
 tasque.sln                                |    2 +-
 8 files changed, 357 insertions(+), 194 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 52c133e..1acf5ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,7 +29,7 @@ bin/
 *.exe
 *.dll
 *.pdb
+*.mdb
 
 # include binary dependencies
 !/src/tasque/lib/*
-!/build/lib/*
diff --git a/build/GlobalDefines.cs b/build/GlobalDefines.cs
index ce6c445..9cb68ca 100644
--- a/build/GlobalDefines.cs
+++ b/build/GlobalDefines.cs
@@ -1,22 +1,22 @@
 // This file (GlobalDefines.cs) is automatically generated. Do not edit. (Edit GlobalDefines.cs.in instead.)
-//
+// 
 // GlobalDefines.cs
-//
+//  
 // Author:
 //       Antonius Riha <antoniusriha gmail com>
-//
+// 
 // Copyright (c) 2012 Antonius Riha
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -24,11 +24,39 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+
+using System.Collections.ObjectModel;
+
 namespace Tasque {
-static class GlobalDefines {
-public const string Version = "0.1.10";
-public const string DataDir	= "@datadir@";
-public const string LocaleDir = "@datadir@/locale";
-public const string SoundDir = "@datadir@/tasque/sounds";
-}
-}
+	static class GlobalDefines {
+		public const string Version = "0.1.10";
+//		public const string DataDir	= "@datadir@";
+//		public const string LocaleDir = "@datadir@/locale";
+//		public const string SoundDir = "@datadir@/tasque/sounds";
+		public const string CopyrightInfo = @"Copyright (c) 2008 Novell, Inc.
+";
+		public const string License = @"Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+""Software""), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+";
+		public const string Website = "https://live.gnome.org/Tasque";;
+		public static readonly ReadOnlyCollection<string> Authors =
+			new ReadOnlyCollection<string> (new Collection<string> () { "Boyd Timothy <btimothy gmail com>", "Calvin Gaisford <calvinrg gmail com>", "Brian Merrell <bgmerrell gmail com>", "Sandy Armstrong <sanfordarmstrong gmail com>",  });
+	}
+}
\ No newline at end of file
diff --git a/build/GlobalDefines.cs.in b/build/GlobalDefines.cs.in
index 2cdd842..224bc44 100644
--- a/build/GlobalDefines.cs.in
+++ b/build/GlobalDefines.cs.in
@@ -25,11 +25,18 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
+using System.Collections.ObjectModel;
+
 namespace Tasque {
 	static class GlobalDefines {
 		public const string Version = "@version@";
-		public const string DataDir	= "@datadir@";
-		public const string LocaleDir = "@datadir@/locale";
-		public const string SoundDir = "@datadir@/tasque/sounds";
+//		public const string DataDir	= "@datadir@";
+//		public const string LocaleDir = "@datadir@/locale";
+//		public const string SoundDir = "@datadir@/tasque/sounds";
+		public const string CopyrightInfo = @"@copyrightinfo@";
+		public const string License = @"@license@";
+		public const string Website = "@website@";
+		public static readonly ReadOnlyCollection<string> Authors =
+			new ReadOnlyCollection<string> (new Collection<string> () { @authors@ });
 	}
 }
\ No newline at end of file
diff --git a/build/SetDataAtBuildTime.cs b/build/SetDataAtBuildTime.cs
new file mode 100644
index 0000000..684136a
--- /dev/null
+++ b/build/SetDataAtBuildTime.cs
@@ -0,0 +1,211 @@
+//
+// SetDataAtBuildTime.cs
+//
+// Author:
+//       Antonius Riha <antoniusriha gmail com>
+//
+// Copyright (c) 2012 Antonius Riha
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.IO;
+using System.Text;
+using Microsoft.Build.Framework;
+using Microsoft.Build.Utilities;
+
+namespace Tasque.Build
+{
+	public class SetDataAtBuildTime : Task
+	{
+		[Required]
+		public ITaskItem AuthorsFile {
+			get {
+				return authorsFile;
+			}
+			set {
+				authorsFile = value;
+
+				try {
+					using (var fs = new FileStream (value.GetMetadata ("FullPath"), FileMode.Open)) {
+						using (var sr = new StreamReader (fs)) {
+
+							var authorsStrBuilder = new StringBuilder ();
+
+							while (!sr.EndOfStream) {
+								var line = sr.ReadLine ().Trim ();
+								if (!string.IsNullOrWhiteSpace (line))
+									authorsStrBuilder.Append ("\"" + line + "\", ");
+							}
+
+							authors = authorsStrBuilder.ToString ();
+						}
+					} 
+				} catch (Exception ex) {
+					Log.LogErrorFromException (ex);
+				}
+			}
+		}
+
+		[Required]
+		public ITaskItem CopyingFile {
+			get {
+				return copyingFile;
+			}
+			set {
+				copyingFile = value;
+
+				try {
+					using (var fs = new FileStream (value.GetMetadata ("FullPath"), FileMode.Open)) {
+						using (var sr = new StreamReader (fs)) {
+
+							/*
+							 * Parsing states:
+							 * 0 ... nothing parsed yet
+							 * 1 ... parsing copyright notice
+							 * 2 ... before parsing license text
+							 * 3 ... parsing license text
+							 * 
+							 * The text format to be parsed is:
+							 * [empty line]*
+							 * [paragraph with copyright notices]
+							 * [empty line]*
+							 * [paragraphs with license text]
+							 */
+							int state = 0;
+
+							var copyrightStrBuilder = new StringBuilder ();
+							var licenseStrBuilder = new StringBuilder ();
+
+							while (!sr.EndOfStream) {
+								var line = sr.ReadLine ().Trim ();
+								switch (state) {
+								case 0:
+									if (string.IsNullOrWhiteSpace (line))
+										break;
+									else {
+										state = 1;
+										goto case 1;
+									}
+								case 1:
+									if (!string.IsNullOrWhiteSpace (line)) {
+										copyrightStrBuilder.AppendLine (line);
+										break;
+									} else {
+										state = 2;
+										break;
+									}
+								case 2:
+									if (string.IsNullOrWhiteSpace (line))
+										break;
+									else {
+										state = 3;
+										goto case 3;
+									}
+								case 3:
+									licenseStrBuilder.AppendLine (line);
+									break;
+								}
+							}
+
+							/* 
+							 * Replace double quotes with double double quotes, which is
+							 * necessary to escape double quotes in verbatim C# string constants.							 * 
+							 */
+							copyrightStrBuilder.Replace ("\"", "\"\"");
+							licenseStrBuilder.Replace ("\"", "\"\"");
+
+							copyrightInfo = copyrightStrBuilder.ToString ();
+							license = licenseStrBuilder.ToString ();
+						}
+					}
+				} catch (Exception ex) {
+					Log.LogErrorFromException (ex);
+				}
+			}
+		}
+
+		[Required]
+		public ITaskItem GlobalDefinesFile { get; set; }
+
+		[Required]
+		public ITaskItem GlobalDefinesFileIn { get; set; }
+
+		[Required]
+		public ITaskItem Version { get; set; }
+
+		[Required]
+		public ITaskItem Website { get; set; }
+
+		public override bool Execute ()
+		{
+			if (!ReadGlobalDefines ())
+				return false;
+
+			SetValue ("@version@", Version.ItemSpec);
+
+			SetValue ("@copyrightinfo@", copyrightInfo);
+
+			SetValue ("@license@", license);
+
+			SetValue ("@website@", Website.ItemSpec);
+
+			SetValue ("@authors@", authors);
+
+			if (!WriteGlobalDefines ())
+				return false;
+
+			return true;
+		}
+
+		bool ReadGlobalDefines ()
+		{
+			try {
+				globalDefines = File.ReadAllText (GlobalDefinesFileIn.GetMetadata ("FullPath"));
+			} catch (Exception ex) {
+				Log.LogErrorFromException (ex);
+				return false;
+			}
+			return true;
+		}
+
+		void SetValue (string key, string value)
+		{
+			globalDefines = globalDefines.Replace (key, value);
+		}
+
+		bool WriteGlobalDefines ()
+		{
+			try {
+				File.WriteAllText (GlobalDefinesFile.GetMetadata ("FullPath"), globalDefines);
+			} catch (Exception ex) {
+				Log.LogErrorFromException (ex);
+				return false;
+			}
+			return true;
+		}
+
+		ITaskItem authorsFile;
+		string authors;
+		ITaskItem copyingFile;
+		string copyrightInfo;
+		string globalDefines;
+		string license;
+	}
+}
diff --git a/build/build.mdproj b/build/build.csproj
similarity index 50%
rename from build/build.mdproj
rename to build/build.csproj
index f15f0eb..3f4ae5e 100644
--- a/build/build.mdproj
+++ b/build/build.csproj
@@ -1,81 +1,127 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Default</Configuration>
+    <Configuration Condition=" '$(Configuration)' == '' ">GnomeDebug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ItemType>GenericProject</ItemType>
     <ProductVersion>10.0.0</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
     <ProjectGuid>{7B2BA3AC-B9C7-4734-AF59-2750B5C3672B}</ProjectGuid>
     <ReleaseVersion>0.1.10</ReleaseVersion>
-    <MSBuildCommunityTasksPath>./</MSBuildCommunityTasksPath>
-  </PropertyGroup>
-  <Import Project="lib\MSBuild.Community.Tasks.Targets" />
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Default|AnyCPU' ">
-    <OutputPath>.</OutputPath>
+    <OutputType>Library</OutputType>
+    <AssemblyName>Tasque.Build</AssemblyName>
+    <RootNamespace>Tasque.Build</RootNamespace>
+    <Website>https://live.gnome.org/Tasque</Website>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'GnomeDebug|AnyCPU' ">
-    <OutputPath>.</OutputPath>
+    <OutputPath>lib</OutputPath>
+    <DebugType>full</DebugType>
+    <WarningLevel>4</WarningLevel>
+    <Optimize>false</Optimize>
+    <DebugSymbols>true</DebugSymbols>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'GnomeRelease|AnyCPU' ">
-    <OutputPath>.</OutputPath>
+    <OutputPath>lib</OutputPath>
     <CustomCommands>
       <CustomCommands>
         <Command type="Build" command="echo &quot;building...&quot;" />
         <Command type="Clean" command="echo &quot;cleaning...&quot;" />
       </CustomCommands>
     </CustomCommands>
+    <DebugType>none</DebugType>
+    <WarningLevel>4</WarningLevel>
+    <Optimize>false</Optimize>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'GtkLinuxDebug|AnyCPU' ">
-    <OutputPath>.</OutputPath>
+    <OutputPath>lib</OutputPath>
+    <DebugType>full</DebugType>
+    <WarningLevel>4</WarningLevel>
+    <Optimize>false</Optimize>
+    <DebugSymbols>true</DebugSymbols>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'GtkLinuxRelease|AnyCPU' ">
-    <OutputPath>.</OutputPath>
+    <OutputPath>lib</OutputPath>
     <CustomCommands>
       <CustomCommands>
         <Command type="Build" command="echo &quot;building...&quot;" />
         <Command type="Clean" command="echo &quot;cleaning...&quot;" />
       </CustomCommands>
     </CustomCommands>
+    <DebugType>none</DebugType>
+    <WarningLevel>4</WarningLevel>
+    <Optimize>false</Optimize>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'GtkWinDebug|AnyCPU' ">
-    <OutputPath>.</OutputPath>
+    <OutputPath>lib</OutputPath>
+    <DebugType>full</DebugType>
+    <WarningLevel>4</WarningLevel>
+    <Optimize>false</Optimize>
+    <DebugSymbols>true</DebugSymbols>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'GtkWinRelease|AnyCPU' ">
-    <OutputPath>.</OutputPath>
+    <OutputPath>lib</OutputPath>
     <CustomCommands>
       <CustomCommands>
         <Command type="Build" command="echo &quot;building...&quot;" />
         <Command type="Clean" command="echo &quot;cleaning...&quot;" />
       </CustomCommands>
     </CustomCommands>
+    <DebugType>none</DebugType>
+    <WarningLevel>4</WarningLevel>
+    <Optimize>false</Optimize>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'GtkMacDebug|AnyCPU' ">
-    <OutputPath>.</OutputPath>
+    <OutputPath>lib</OutputPath>
+    <DebugType>full</DebugType>
+    <WarningLevel>4</WarningLevel>
+    <Optimize>false</Optimize>
+    <DebugSymbols>true</DebugSymbols>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'GtkMacRelease|AnyCPU' ">
-    <OutputPath>.</OutputPath>
+    <OutputPath>lib</OutputPath>
     <CustomCommands>
       <CustomCommands>
         <Command type="Build" command="echo &quot;building...&quot;" />
         <Command type="Clean" command="echo &quot;cleaning...&quot;" />
       </CustomCommands>
     </CustomCommands>
+    <DebugType>none</DebugType>
+    <WarningLevel>4</WarningLevel>
+    <Optimize>false</Optimize>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'MonoMacDebug|AnyCPU' ">
-    <OutputPath>.</OutputPath>
+    <OutputPath>lib</OutputPath>
+    <DebugType>full</DebugType>
+    <WarningLevel>4</WarningLevel>
+    <Optimize>false</Optimize>
+    <DebugSymbols>true</DebugSymbols>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'MonoMacRelease|AnyCPU' ">
-    <OutputPath>.</OutputPath>
+    <OutputPath>lib</OutputPath>
     <CustomCommands>
       <CustomCommands>
         <Command type="Build" command="echo &quot;building...&quot;" />
         <Command type="Clean" command="echo &quot;cleaning...&quot;" />
       </CustomCommands>
     </CustomCommands>
+    <DebugType>none</DebugType>
+    <WarningLevel>4</WarningLevel>
+    <Optimize>false</Optimize>
   </PropertyGroup>
+  <!-- Project and tasks imports -->
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <UsingTask AssemblyFile="lib\Tasque.Build.dll" TaskName="Tasque.Build.SetDataAtBuildTime" />
   <ItemGroup>
-    <None Include="build.mdproj" />
+    <None Include="build.csproj" />
     <None Include="..\tasque.sln">
       <Link>tasque.sln</Link>
     </None>
@@ -91,7 +137,6 @@
     <None Include="fixautotoolsbuild.sh" />
     <None Include="CommonAssemblyInfo.cs" />
     <None Include="bundle-mac-app.sh" />
-    <GlobalDefinesCsIn Include="GlobalDefines.cs.in" />
     <None Include="mac-postbuild.sh" />
     <None Include="mac-prebuild.sh" />
     <None Include="..\po\translation.mdproj">
@@ -101,16 +146,35 @@
       <Link>tests.csproj</Link>
     </None>
   </ItemGroup>
-  <Target Name="Build" DependsOnTargets="PreBuild" />
-  <Target Name="PreBuild">
+  <ItemGroup>
+    <Compile Include="SetDataAtBuildTime.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <GlobalDefines Include="GlobalDefines.cs" />
+    <GlobalDefinesIn Include="GlobalDefines.cs.in" />
+  </ItemGroup>
+  <ItemGroup>
+    <License Include="..\LICENSE">
+      <Link>LICENSE</Link>
+    </License>
+    <Authors Include="..\AUTHORS">
+      <Link>AUTHORS</Link>
+    </Authors>
+  </ItemGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.Build.Framework" />
+    <Reference Include="Microsoft.Build.Utilities.v4.0" />
+  </ItemGroup>
+  <Target Name="AfterBuild">
     <Message Text="Setting up global definitions..." />
-    <ReadLinesFromFile File="@(GlobalDefinesCsIn)">
-      <Output TaskParameter="Lines" ItemName="GlobalDefinesIn" />
-    </ReadLinesFromFile>
-    <RegexReplace Input="@(GlobalDefinesIn)" Expression="@version@" Replacement="$(ReleaseVersion)">
-      <Output ItemName="GlobalDefines" TaskParameter="Output" />
-    </RegexReplace>
-    <WriteLinesToFile File="GlobalDefines.cs" Lines="@(GlobalDefines)" Overwrite="true" />
-    <Message Text="Finished." />
+    <SetDataAtBuildTime AuthorsFile="@(Authors)" CopyingFile="@(License)" GlobalDefinesFile="@(GlobalDefines)" GlobalDefinesFileIn="@(GlobalDefinesIn)" Version="$(ReleaseVersion)" Website="$(Website)" />
+    <Message Text="Finished setting up global definitions." />
   </Target>
+  <ProjectExtensions>
+    <MonoDevelop>
+      <Properties>
+        <Deployment.LinuxDeployData generatePcFile="false" />
+      </Properties>
+    </MonoDevelop>
+  </ProjectExtensions>
 </Project>
diff --git a/tasque.sln b/tasque.sln
index a0e2404..c1594cf 100644
--- a/tasque.sln
+++ b/tasque.sln
@@ -1,7 +1,7 @@
 ï
 Microsoft Visual Studio Solution File, Format Version 11.00
 # Visual Studio 2010
-Project("{9344bdbb-3e7f-41fc-a0dd-8665d75ee146}") = "build", "build\build.mdproj", "{7B2BA3AC-B9C7-4734-AF59-2750B5C3672B}"
+Project("{9344bdbb-3e7f-41fc-a0dd-8665d75ee146}") = "build", "build\build.csproj", "{7B2BA3AC-B9C7-4734-AF59-2750B5C3672B}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tasque", "src\tasque\tasque.csproj", "{B19B9840-669D-4984-9772-E1F55193A67F}"
 EndProject



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]