Added query function for easier queries.

Normalized method names in GroupManager.cs
This commit is contained in:
high 2011-07-24 10:12:18 -04:00
parent cda0002889
commit 57a2d082ef
8 changed files with 205 additions and 276 deletions

View file

@ -1218,7 +1218,7 @@ namespace TShockAPI
args.Parameters.RemoveAt(0);
String permissions = String.Join(",", args.Parameters );
String response = TShock.Groups.addGroup(groupname, permissions);
String response = TShock.Groups.AddGroup(groupname, permissions);
if( response.Length > 0 )
args.Player.SendMessage(response, Color.Green);
}
@ -1234,7 +1234,7 @@ namespace TShockAPI
{
String groupname = args.Parameters[0];
String response = TShock.Groups.delGroup(groupname);
String response = TShock.Groups.DeleteGroup(groupname);
if (response.Length > 0)
args.Player.SendMessage(response, Color.Green);
}
@ -1256,14 +1256,14 @@ namespace TShockAPI
if (com.Equals("add"))
{
String response = TShock.Groups.addPermission(groupname, args.Parameters);
String response = TShock.Groups.AddPermissions(groupname, args.Parameters);
if (response.Length > 0)
args.Player.SendMessage(response, Color.Green);
return;
}
else if (com.Equals("del") || com.Equals("delete"))
{
String response = TShock.Groups.delPermission(groupname, args.Parameters);
String response = TShock.Groups.DeletePermissions(groupname, args.Parameters);
if (response.Length > 0)
args.Player.SendMessage(response, Color.Green);
return;

View file

@ -34,45 +34,39 @@ namespace TShockAPI.DB
{
database = db;
using (var com = database.CreateCommand())
string query;
if (TShock.Config.StorageType.ToLower() == "sqlite")
query =
"CREATE TABLE IF NOT EXISTS 'Bans' ('IP' TEXT PRIMARY KEY, 'Name' TEXT, 'Reason' TEXT);";
else
query =
"CREATE TABLE IF NOT EXISTS Bans (IP VARCHAR(255) PRIMARY, Name VARCHAR(255), Reason VARCHAR(255));";
db.Query(query);
String file = Path.Combine(TShock.SavePath, "bans.txt");
if (File.Exists(file))
{
if (TShock.Config.StorageType.ToLower() == "sqlite")
com.CommandText =
"CREATE TABLE IF NOT EXISTS 'Bans' ('IP' TEXT PRIMARY KEY, 'Name' TEXT, 'Reason' TEXT);";
else if (TShock.Config.StorageType.ToLower() == "mysql")
com.CommandText =
"CREATE TABLE IF NOT EXISTS Bans (IP VARCHAR(255) PRIMARY, Name VARCHAR(255), Reason VARCHAR(255));";
com.ExecuteNonQuery();
String file = Path.Combine( TShock.SavePath, "bans.txt" );
if (File.Exists(file))
using (StreamReader sr = new StreamReader(file))
{
using (StreamReader sr = new StreamReader(file))
String line;
while ((line = sr.ReadLine()) != null)
{
String line;
while ((line = sr.ReadLine()) != null)
{
String[] info = line.Split('|');
if (TShock.Config.StorageType.ToLower() == "sqlite")
com.CommandText = "INSERT OR IGNORE INTO Bans (IP, Name, Reason) VALUES (@ip, @name, @reason);";
else if (TShock.Config.StorageType.ToLower() == "mysql")
com.CommandText = "INSERT IGNORE INTO Bans SET IP=@ip, Name=@name, Reason=@reason;";
com.AddParameter("@ip", info[0].Trim());
com.AddParameter("@name", info[1].Trim());
com.AddParameter("@reason", info[2].Trim());
com.ExecuteNonQuery();
com.Parameters.Clear();
}
String[] info = line.Split('|');
if (TShock.Config.StorageType.ToLower() == "sqlite")
query = "INSERT OR IGNORE INTO Bans (IP, Name, Reason) VALUES (@0, @1, @2);";
else
query = "INSERT IGNORE INTO Bans SET IP=@0, Name=@1, Reason=@2;";
db.Query(query, info[0].Trim(), info[1].Trim(), info[2].Trim());
}
String path = Path.Combine(TShock.SavePath, "old_configs");
String file2 = Path.Combine(path, "bans.txt");
if (!Directory.Exists(path))
System.IO.Directory.CreateDirectory(path);
if (File.Exists(file2))
File.Delete(file2);
File.Move(file, file2);
}
String path = Path.Combine(TShock.SavePath, "old_configs");
String file2 = Path.Combine(path, "bans.txt");
if (!Directory.Exists(path))
System.IO.Directory.CreateDirectory(path);
if (File.Exists(file2))
File.Delete(file2);
File.Move(file, file2);
}
}
@ -80,17 +74,10 @@ namespace TShockAPI.DB
{
try
{
using (var com = database.CreateCommand())
using (var reader = database.QueryReader("SELECT * FROM Bans WHERE IP=@0", ip))
{
com.CommandText = "SELECT * FROM Bans WHERE IP=@ip";
com.AddParameter("@ip", ip);
using (var reader = com.ExecuteReader())
{
if (reader.Read())
return new Ban((string)reader["IP"], (string)reader["Name"], (string)reader["Reason"]);
reader.Close();
}
if (reader.Read())
return new Ban((string)reader["IP"], (string)reader["Name"], (string)reader["Reason"]);
}
}
catch (Exception ex)
@ -108,20 +95,14 @@ namespace TShockAPI.DB
}
try
{
using (var com = database.CreateCommand())
var namecol = casesensitive ? "Name" : "UPPER(Name)";
if (!casesensitive)
name = name.ToUpper();
using (var reader = database.QueryReader("SELECT * FROM Bans WHERE " + namecol + "=@0", name))
{
var namecol = casesensitive ? "Name" : "UPPER(Name)";
if (!casesensitive)
name = name.ToUpper();
com.CommandText = "SELECT * FROM Bans WHERE " + namecol + "=@name";
com.AddParameter("@name", name);
using (var reader = com.ExecuteReader())
{
if (reader.Read())
return new Ban((string)reader["IP"], (string)reader["Name"], (string)reader["Reason"]);
if (reader.Read())
return new Ban((string)reader["IP"], (string)reader["Name"], (string)reader["Reason"]);
reader.Close();
}
}
}
catch (Exception ex)
@ -135,15 +116,7 @@ namespace TShockAPI.DB
{
try
{
using (var com = database.CreateCommand())
{
com.CommandText = "INSERT INTO Bans (IP, Name, Reason) VALUES (@ip, @name, @reason);";
com.AddParameter("@ip", ip);
com.AddParameter("@name", name);
com.AddParameter("@reason", reason);
com.ExecuteNonQuery();
}
return true;
return database.Query("INSERT INTO Bans (IP, Name, Reason) VALUES (@0, @1, @2);", ip, name, reason) != 0;
}
catch (Exception ex)
{
@ -156,13 +129,7 @@ namespace TShockAPI.DB
{
try
{
using (var com = database.CreateCommand())
{
com.CommandText = "DELETE FROM Bans WHERE IP=@ip";
com.AddParameter("@ip", ip);
com.ExecuteNonQuery();
return true;
}
return database.Query("DELETE FROM Bans WHERE IP=@ip", ip) != 0;
}
catch (Exception ex)
{
@ -174,12 +141,7 @@ namespace TShockAPI.DB
{
try
{
using (var com = database.CreateCommand())
{
com.CommandText = "DELETE FROM Bans";
com.ExecuteNonQuery();
return true;
}
return database.Query("DELETE FROM Bans") != 0;
}
catch (Exception ex)
{

View file

@ -8,6 +8,44 @@ namespace TShockAPI.DB
{
public static class DbExt
{
/// <summary>
/// Executes a query on a database.
/// </summary>
/// <param name="db">Database to query</param>
/// <param name="query">Query string with parameters as @0, @1, etc.</param>
/// <param name="args">Parameters to be put in the query</param>
/// <returns>Rows affected by query</returns>
public static int Query(this IDbConnection db, string query, params object[] args)
{
using (var com = db.CreateCommand())
{
com.CommandText = query;
for (int i = 0; i < args.Length; i++)
com.AddParameter("@" + i, args[i]);
return com.ExecuteNonQuery();
}
}
/// <summary>
/// Executes a query on a database.
/// </summary>
/// <param name="db">Database to query</param>
/// <param name="query">Query string with parameters as @0, @1, etc.</param>
/// <param name="args">Parameters to be put in the query</param>
/// <returns>Query result as IDataReader</returns>
public static IDataReader QueryReader(this IDbConnection db, string query, params object[] args)
{
using (var com = db.CreateCommand())
{
com.CommandText = query;
for (int i = 0; i < args.Length; i++)
com.AddParameter("@" + i, args[i]);
return com.ExecuteReader();
}
}
public static IDbDataParameter AddParameter(this IDbCommand command, string name, object data)
{
var parm = command.CreateParameter();

View file

@ -18,17 +18,15 @@ namespace TShockAPI.DB
{
database = db;
using (var com = database.CreateCommand())
{
if (TShock.Config.StorageType.ToLower() == "sqlite")
com.CommandText =
"CREATE TABLE IF NOT EXISTS 'GroupList' ('GroupName' TEXT PRIMARY KEY, 'Commands' TEXT, 'OrderBy' TEXT);";
else if (TShock.Config.StorageType.ToLower() == "mysql")
com.CommandText =
"CREATE TABLE IF NOT EXISTS GroupList (GroupName VARCHAR(255) PRIMARY, Commands VARCHAR(255), OrderBy VARCHAR(255));";
string query;
if (TShock.Config.StorageType.ToLower() == "sqlite")
query =
"CREATE TABLE IF NOT EXISTS 'GroupList' ('GroupName' TEXT PRIMARY KEY, 'Commands' TEXT, 'OrderBy' TEXT);";
else
query =
"CREATE TABLE IF NOT EXISTS GroupList (GroupName VARCHAR(255) PRIMARY, Commands VARCHAR(255), OrderBy VARCHAR(255));";
com.ExecuteNonQuery();
}
db.Query(query);
//Add default groups
AddGroup("trustedadmin", "admin,maintenance,cfg,butcher,item,heal,immunetoban,ignorecheatdetection,ignoregriefdetection,usebanneditem,manageusers");
@ -60,18 +58,14 @@ namespace TShockAPI.DB
comms = comms + ",";
comms = comms + info[i].Trim();
}
using (var com = database.CreateCommand())
{
if (TShock.Config.StorageType.ToLower() == "sqlite")
com.CommandText = "INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@groupname, @commands, @order);";
else if (TShock.Config.StorageType.ToLower() == "mysql")
com.CommandText = "INSERT IGNORE INTO GroupList SET GroupName=@groupname, Commands=@commands, OrderBy=@order;";
com.AddParameter("@groupname", info[0].Trim());
com.AddParameter("@commands", comms);
com.AddParameter("@order", hasOrder ? info[info.Length - 1] : "0");
com.ExecuteNonQuery();
}
if (TShock.Config.StorageType.ToLower() == "sqlite")
query = "INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@0, @1, @2);";
else if (TShock.Config.StorageType.ToLower() == "mysql")
query = "INSERT IGNORE INTO GroupList SET GroupName=@0, Commands=@1, OrderBy=@2;";
db.Query(query, info[0].Trim(), comms, hasOrder ? info[info.Length - 1] : "0");
}
}
}
@ -86,27 +80,6 @@ namespace TShockAPI.DB
}
/// <summary>
/// Adds group with name and permissions if it does not exist.
/// </summary>
/// <param name="name">name of group</param>
/// <param name="commands">permissions</param>
public void AddGroup(string name, string commands)
{
using (var com = database.CreateCommand())
{
if (TShock.Config.StorageType.ToLower() == "sqlite")
com.CommandText =
"INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@groupname, @commands, @order);";
else if (TShock.Config.StorageType.ToLower() == "mysql")
com.CommandText =
"INSERT IGNORE INTO GroupList SET GroupName=@groupname, Commands=@commands, OrderBy=@order;";
com.AddParameter("@groupname", name);
com.AddParameter("@commands", commands);
com.AddParameter("@order", "0");
com.ExecuteNonQuery();
}
}
public bool GroupExists(string group)
{
@ -123,93 +96,74 @@ namespace TShockAPI.DB
return false;
}
public String addGroup(String name, String permissions)
/// <summary>
/// Adds group with name and permissions if it does not exist.
/// </summary>
/// <param name="name">name of group</param>
/// <param name="permissions">permissions</param>
public String AddGroup(String name, String permissions)
{
String message = "";
if( GroupExists( name ) )
if (GroupExists(name))
return "Error: Group already exists. Use /modGroup to change permissions.";
using (var com = database.CreateCommand())
{
if (TShock.Config.StorageType.ToLower() == "sqlite")
com.CommandText = "INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@groupname, @commands, @order);";
else if (TShock.Config.StorageType.ToLower() == "mysql")
com.CommandText = "INSERT IGNORE INTO GroupList SET GroupName=@groupname, Commands=@commands, OrderBy=@order;";
com.AddParameter("@groupname", name);
com.AddParameter("@commands", permissions);
com.AddParameter("@order", "0");
if (com.ExecuteNonQuery() == 1)
message = "Group " + name + " has been created successfully.";
Group g = new Group(name);
g.permissions.Add(permissions);
groups.Add(g);
}
string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
"INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@0, @1, @2);" :
"INSERT IGNORE INTO GroupList SET GroupName=@0, Commands=@1, OrderBy=@2;";
if (database.Query(query, name, permissions, "0") == 1)
message = "Group " + name + " has been created successfully.";
Group g = new Group(name);
g.permissions.Add(permissions);
groups.Add(g);
return message;
}
public String delGroup(String name)
public String DeleteGroup(String name)
{
String message = "";
if (!GroupExists(name))
return "Error: Group doesn't exists.";
using (var com = database.CreateCommand())
{
com.CommandText = "Delete FROM GroupList WHERE GroupName=@groupname;";
com.AddParameter("@groupname", name);
if (com.ExecuteNonQuery() == 1)
message = "Group " + name + " has been deleted successfully.";
groups.Remove(Tools.GetGroup(name));
}
if (database.Query("DELETE FROM GroupList WHERE GroupName=@0", name) == 1)
message = "Group " + name + " has been deleted successfully.";
groups.Remove(Tools.GetGroup(name));
return message;
}
public String addPermission(String name, List<String> permissions)
public String AddPermissions(String name, List<String> permissions)
{
String message = "";
if (!GroupExists(name))
return "Error: Group doesn't exists.";
using (var com = database.CreateCommand())
{
Group g = Tools.GetGroup(name);
List<String> perm = g.permissions;
foreach (String p in permissions)
{
if (!perm.Contains(p))
{
if (perm.Count > 0 && perm[0].Equals(""))
perm[0] = p;
else
g.permissions.Add(p);
}
}
com.CommandText = "UPDATE GroupList SET Commands=@perm WHERE GroupName=@name;";
com.AddParameter("@perm", String.Join(",", perm));
com.AddParameter("@name", name);
if (com.ExecuteNonQuery() == 1)
message = "Group " + name + " has been modified successfully.";
}
var group = Tools.GetGroup(name);
//Add existing permissions (without duplicating)
permissions.AddRange(group.permissions.Where(s => !permissions.Contains(s)));
if (database.Query("UPDATE GroupList SET Commands=@0 WHERE GroupName=@1", String.Join(",", permissions), name) != 0)
message = "Group " + name + " has been modified successfully.";
return message;
}
public String delPermission(String name, List<String> permissions)
public String DeletePermissions(String name, List<String> permissions)
{
String message = "";
if (!GroupExists(name))
return "Error: Group doesn't exists.";
using (var com = database.CreateCommand())
{
Group g = Tools.GetGroup(name);
List<String> perm = g.permissions;
foreach (String p in permissions)
{
if (perm.Contains(p))
g.permissions.Remove(p);
}
com.CommandText = "UPDATE GroupList SET Commands=@perm WHERE GroupName=@name;";
com.AddParameter("@perm", String.Join(",", perm));
com.AddParameter("@name", name);
if (com.ExecuteNonQuery() == 1)
message = "Group " + name + " has been modified successfully.";
}
var group = Tools.GetGroup(name);
//Only get permissions that exist in the group.
var newperms = permissions.Where(s => group.permissions.Contains(s));
if (database.Query("UPDATE GroupList SET Commands=@0 WHERE GroupName=@1", String.Join(",", newperms), name) != 0)
message = "Group " + name + " has been modified successfully.";
return message;
}
@ -220,41 +174,23 @@ namespace TShockAPI.DB
try
{
using (var com = database.CreateCommand())
{
com.CommandText = "SELECT * FROM Grouplist;";
using (var reader = com.ExecuteReader())
{
while (reader.Read())
{
Group group = null;
string groupname = reader.Get<String>("GroupName");
group = new Group(groupname);
//Inherit Given commands
String[] commands = reader.Get<String>("Commands").Split(',');
for (int i = 0; i < commands.Length; i++)
{
group.AddPermission(commands[i].Trim());
}
groups.Add(group);
}
}
/** ORDER BY IS DUMB
//Inherit all commands from group below in order, unless Order is 0 (unique groups anyone)
foreach (Group group in groups)
using (var reader = database.QueryReader("SELECT * FROM Grouplist;"))
{
while (reader.Read())
{
if (group.Order != 0 && group.Order < groups.Count)
Group group = null;
string groupname = reader.Get<String>("GroupName");
group = new Group(groupname);
//Inherit Given commands
String[] commands = reader.Get<String>("Commands").Split(',');
for (int i = 0; i < commands.Length; i++)
{
for (int i = group.Order + 1; i < groups.Count; i++)
{
for (int j = 0; j < groups[i].permissions.Count; j++)
{
group.AddPermission(groups[i].permissions[j]);
}
}
group.AddPermission(commands[i].Trim());
}
}*/
groups.Add(group);
}
}
}
catch (Exception ex)

View file

@ -18,48 +18,42 @@ namespace TShockAPI.DB
{
database = db;
using (var com = database.CreateCommand())
string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
"CREATE TABLE IF NOT EXISTS 'ItemBans' ('ItemName' TEXT PRIMARY KEY);" :
"CREATE TABLE IF NOT EXISTS ItemBans (ItemName VARCHAR(255) PRIMARY);";
database.Query(query);
String file = Path.Combine(TShock.SavePath, "itembans.txt");
if (File.Exists(file))
{
if (TShock.Config.StorageType.ToLower() == "sqlite")
com.CommandText =
"CREATE TABLE IF NOT EXISTS 'ItemBans' ('ItemName' TEXT PRIMARY KEY);";
else if (TShock.Config.StorageType.ToLower() == "mysql")
com.CommandText =
"CREATE TABLE IF NOT EXISTS ItemBans (ItemName VARCHAR(255) PRIMARY);";
com.ExecuteNonQuery();
String file = Path.Combine(TShock.SavePath, "itembans.txt");
if (File.Exists(file))
using (StreamReader sr = new StreamReader(file))
{
using (StreamReader sr = new StreamReader(file))
String line;
while ((line = sr.ReadLine()) != null)
{
String line;
while ((line = sr.ReadLine()) != null)
if (!line.Equals("") && !line.Substring(0, 1).Equals("#"))
{
if (!line.Equals("") && !line.Substring(0, 1).Equals("#"))
{
if (TShock.Config.StorageType.ToLower() == "sqlite")
com.CommandText = "INSERT OR IGNORE INTO 'ItemBans' (ItemName) VALUES (@name);";
else if (TShock.Config.StorageType.ToLower() == "mysql")
com.CommandText = "INSERT IGNORE INTO ItemBans SET ItemName=@name;";
int id = 0;
int.TryParse(line, out id);
com.AddParameter("@name", Tools.GetItemById(id).name);
com.ExecuteNonQuery();
com.Parameters.Clear();
}
query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
"INSERT OR IGNORE INTO 'ItemBans' (ItemName) VALUES (@0);" :
"INSERT IGNORE INTO ItemBans SET ItemName=@0;";
int id = 0;
int.TryParse(line, out id);
database.Query(query, Tools.GetItemById(id).name);
}
}
String path = Path.Combine(TShock.SavePath, "old_configs");
String file2 = Path.Combine(path, "itembans.txt");
if (!Directory.Exists(path))
System.IO.Directory.CreateDirectory(path);
if (File.Exists(file2))
File.Delete(file2);
File.Move(file, file2);
}
String path = Path.Combine(TShock.SavePath, "old_configs");
String file2 = Path.Combine(path, "itembans.txt");
if (!Directory.Exists(path))
System.IO.Directory.CreateDirectory(path);
if (File.Exists(file2))
File.Delete(file2);
File.Move(file, file2);
}
UpdateItemBans();
@ -74,7 +68,7 @@ namespace TShockAPI.DB
using (var reader = com.ExecuteReader())
{
while (reader!=null&&reader.Read())
while (reader != null && reader.Read())
ItemBans.Add(reader.Get<string>("ItemName"));
}
}
@ -83,14 +77,9 @@ namespace TShockAPI.DB
{
try
{
using (var com = database.CreateCommand())
{
com.CommandText = "INSERT INTO ItemBans (ItemName) VALUES (@itemname);";
com.AddParameter("@itemname", Tools.GetItemByName(itemname)[0].name);
com.ExecuteNonQuery();
if( !ItemIsBanned( itemname ) )
ItemBans.Add(itemname);
}
database.Query("INSERT INTO ItemBans (ItemName) VALUES (@0);", Tools.GetItemByName(itemname)[0].name);
if (!ItemIsBanned(itemname))
ItemBans.Add(itemname);
}
catch (Exception ex)
{
@ -104,13 +93,8 @@ namespace TShockAPI.DB
return;
try
{
using (var com = database.CreateCommand())
{
com.CommandText = "Delete FROM 'ItemBans' WHERE ItemName=@itemname;";
com.AddParameter("@itemname", Tools.GetItemByName(itemname)[0].name);
com.ExecuteNonQuery();
ItemBans.Remove(itemname);
}
database.Query("Delete FROM 'ItemBans' WHERE ItemName=@0;", Tools.GetItemByName(itemname)[0].name);
ItemBans.Remove(itemname);
}
catch (Exception ex)
{

View file

@ -43,14 +43,11 @@ namespace TShockAPI.DB
using (var com = database.CreateCommand())
{
if (TShock.Config.StorageType.ToLower() == "sqlite")
com.CommandText =
"CREATE TABLE IF NOT EXISTS 'Regions' ('X1' NUMERIC, 'Y1' NUMERIC, 'height' NUMERIC, 'width' NUMERIC, 'RegionName' TEXT PRIMARY KEY, 'WorldID' TEXT, 'UserIds' TEXT, 'Protected' NUMERIC);";
else if (TShock.Config.StorageType.ToLower() == "mysql")
com.CommandText =
string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
"CREATE TABLE IF NOT EXISTS 'Regions' ('X1' NUMERIC, 'Y1' NUMERIC, 'height' NUMERIC, 'width' NUMERIC, 'RegionName' TEXT PRIMARY KEY, 'WorldID' TEXT, 'UserIds' TEXT, 'Protected' NUMERIC);":
"CREATE TABLE IF NOT EXISTS Regions (X1 INT(11), Y1 INT(11), height INT(11), width INT(11), RegionName VARCHAR(255) PRIMARY, WorldID VARCHAR(255), UserIds VARCHAR(255), Protected INT(1));";
com.ExecuteNonQuery();
database.Query(query);
String file = Path.Combine(TShock.SavePath, "regions.xml");
String name = "";

11
TShockAPI/DB/SqlTable.cs Normal file
View file

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TShockAPI.DB
{
class SqlTable
{
}
}

View file

@ -96,6 +96,7 @@
<Compile Include="DB\ItemManager.cs" />
<Compile Include="DB\DbExt.cs" />
<Compile Include="DB\GroupManager.cs" />
<Compile Include="DB\SqlTable.cs" />
<Compile Include="DB\UserManager.cs" />
<Compile Include="IPackable.cs" />
<Compile Include="Commands.cs" />
@ -170,7 +171,7 @@
</PropertyGroup>
<ProjectExtensions>
<VisualStudio>
<UserProperties BuildVersion_IncrementBeforeBuild="False" BuildVersion_StartDate="2011/6/17" BuildVersion_BuildVersioningStyle="None.None.None.MonthAndDayStamp" BuildVersion_BuildAction="Both" BuildVersion_UpdateFileVersion="True" BuildVersion_UpdateAssemblyVersion="True" />
<UserProperties BuildVersion_UpdateAssemblyVersion="True" BuildVersion_UpdateFileVersion="True" BuildVersion_BuildAction="Both" BuildVersion_BuildVersioningStyle="None.None.None.MonthAndDayStamp" BuildVersion_StartDate="2011/6/17" BuildVersion_IncrementBeforeBuild="False" />
</VisualStudio>
</ProjectExtensions>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.