本文整理汇总了C#中MonoDevelop.Projects.Formats.MSBuild.Section类的典型用法代码示例。如果您正苦于以下问题:C# Section类的具体用法?C# Section怎么用?C# Section使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
Section类属于MonoDevelop.Projects.Formats.MSBuild命名空间,在下文中一共展示了Section类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: LoadSolution
//ExtendedProperties
// Per config
// Platform : Eg. Any CPU
// SolutionConfigurationPlatforms
//
SolutionFolder LoadSolution (Solution sol, string fileName, MSBuildFileFormat format, IProgressMonitor monitor)
{
string headerComment;
string version = GetSlnFileVersion (fileName, out headerComment);
ListDictionary globals = null;
SolutionFolder folder = null;
SlnData data = null;
List<Section> projectSections = null;
List<string> lines = null;
FileFormat projectFormat = Services.ProjectService.FileFormats.GetFileFormat (format);
monitor.BeginTask (GettextCatalog.GetString ("Loading solution: {0}", fileName), 1);
//Parse the .sln file
using (StreamReader reader = new StreamReader(fileName)) {
sol.FileName = fileName;
sol.ConvertToFormat (projectFormat, false);
folder = sol.RootFolder;
sol.Version = "0.1"; //FIXME:
data = new SlnData ();
folder.ExtendedProperties [typeof (SlnFileFormat)] = data;
data.VersionString = version;
data.HeaderComment = headerComment;
string s = null;
projectSections = new List<Section> ();
lines = new List<string> ();
globals = new ListDictionary ();
//Parse
while (reader.Peek () >= 0) {
s = GetNextLine (reader, lines).Trim ();
if (String.Compare (s, "Global", StringComparison.OrdinalIgnoreCase) == 0) {
ParseGlobal (reader, lines, globals);
continue;
}
if (s.StartsWith ("Project", StringComparison.Ordinal)) {
Section sec = new Section ();
projectSections.Add (sec);
sec.Start = lines.Count - 1;
int e = ReadUntil ("EndProject", reader, lines);
sec.Count = (e < 0) ? 1 : (e - sec.Start + 1);
continue;
}
if (s.StartsWith ("VisualStudioVersion = ", StringComparison.Ordinal)) {
Version v;
if (Version.TryParse (s.Substring ("VisualStudioVersion = ".Length), out v))
data.VisualStudioVersion = v;
else
monitor.Log.WriteLine ("Ignoring unparseable VisualStudioVersion value in sln file");
}
if (s.StartsWith ("MinimumVisualStudioVersion = ", StringComparison.Ordinal)) {
Version v;
if (Version.TryParse (s.Substring ("MinimumVisualStudioVersion = ".Length), out v))
data.MinimumVisualStudioVersion = v;
else
monitor.Log.WriteLine ("Ignoring unparseable MinimumVisualStudioVersion value in sln file");
}
}
}
monitor.BeginTask("Loading projects ..", projectSections.Count + 1);
Dictionary<string, SolutionItem> items = new Dictionary<string, SolutionItem> ();
List<SolutionItem> sortedList = new List<SolutionItem> ();
foreach (Section sec in projectSections) {
monitor.Step (1);
Match match = ProjectRegex.Match (lines [sec.Start]);
if (!match.Success) {
LoggingService.LogDebug (GettextCatalog.GetString (
"Invalid Project definition on line number #{0} in file '{1}'. Ignoring.",
sec.Start + 1,
fileName));
continue;
}
try {
// Valid guid?
new Guid (match.Groups [1].Value);
} catch (FormatException) {
//Use default guid as projectGuid
LoggingService.LogDebug (GettextCatalog.GetString (
"Invalid Project type guid '{0}' on line #{1}. Ignoring.",
match.Groups [1].Value,
sec.Start + 1));
continue;
}
//.........这里部分代码省略.........
示例2: ParseGlobal
void ParseGlobal (StreamReader reader, List<string> lines, ListDictionary dict)
{
//Process GlobalSection-s
while (reader.Peek () >= 0) {
string s = GetNextLine (reader, lines).Trim ();
if (s.Length == 0)
//Skip blank lines
continue;
Match m = GlobalSectionRegex.Match (s);
if (!m.Success) {
if (String.Compare (s, "EndGlobal", true) == 0)
return;
continue;
}
Section sec = new Section (m.Groups [1].Value, m.Groups [2].Value, lines.Count - 1, 1);
dict [sec.Key] = sec;
sec.Count = ReadUntil ("EndGlobalSection", reader, lines) - sec.Start + 1;
//FIXME: sec.Count == -1 : No EndGlobalSection found, ignore entry?
}
}
示例3: LoadNestedProjects
void LoadNestedProjects (Section sec, List<string> lines,
IDictionary<string, SolutionItem> entries, IProgressMonitor monitor)
{
if (sec == null || String.Compare (sec.Val, "preSolution", true) != 0)
return;
for (int i = 0; i < sec.Count - 2; i ++) {
// Guids should be upper case for VS compatibility
KeyValuePair<string, string> pair = SplitKeyValue (lines [i + sec.Start + 1].Trim ());
pair = new KeyValuePair<string, string> (pair.Key.ToUpper (), pair.Value.ToUpper ());
SolutionItem folderItem;
SolutionItem item;
if (!entries.TryGetValue (pair.Value, out folderItem)) {
//Container not found
LoggingService.LogWarning (GettextCatalog.GetString ("Project with guid '{0}' not found.", pair.Value));
continue;
}
SolutionFolder folder = folderItem as SolutionFolder;
if (folder == null) {
LoggingService.LogWarning (GettextCatalog.GetString ("Item with guid '{0}' is not a folder.", pair.Value));
continue;
}
if (!entries.TryGetValue (pair.Key, out item)) {
//Containee not found
LoggingService.LogWarning (GettextCatalog.GetString ("Project with guid '{0}' not found.", pair.Key));
continue;
}
folder.Items.Add (item);
}
}
示例4: ReadDataItem
DataItem ReadDataItem (Section sec, List<string> lines)
{
return ReadDataItem (sec.Start, sec.Count, lines);
}
示例5: LoadMonoDevelopConfigurationProperties
void LoadMonoDevelopConfigurationProperties (string configName, Section sec, List<string> lines, Solution sln, IProgressMonitor monitor)
{
SolutionConfiguration config = sln.Configurations [configName];
if (config == null)
return;
DataItem it = ReadDataItem (sec, lines);
MSBuildSerializer ser = new MSBuildSerializer (sln.FileName);
ser.Deserialize (config, it);
}
示例6: LoadMonoDevelopProperties
void LoadMonoDevelopProperties (Section sec, List<string> lines, Solution sln, IProgressMonitor monitor)
{
DataItem it = ReadDataItem (sec, lines);
MSBuildSerializer ser = new MSBuildSerializer (sln.FileName);
ser.SerializationContext.BaseFile = sln.FileName;
ser.Deserialize (sln, it);
}
示例7: LoadSolutionConfigurations
void LoadSolutionConfigurations (Section sec, List<string> lines, Solution solution, IProgressMonitor monitor)
{
if (sec == null || String.Compare (sec.Val, "preSolution", true) != 0)
return;
for (int i = 0; i < sec.Count - 2; i ++) {
//FIXME: expects both key and val to be on the same line
int lineNum = i + sec.Start + 1;
string s = lines [lineNum].Trim ();
if (s.Length == 0)
//Skip blank lines
continue;
KeyValuePair<string, string> pair = SplitKeyValue (s);
string configId = FromSlnConfigurationId (pair.Key);
SolutionConfiguration config = solution.Configurations [configId];
if (config == null) {
config = CreateSolutionConfigurationFromId (configId);
solution.Configurations.Add (config);
}
}
}
示例8: LoadProjectConfigurationMappings
void LoadProjectConfigurationMappings (Section sec, List<string> lines, Solution sln, IProgressMonitor monitor)
{
if (sec == null || String.Compare (sec.Val, "postSolution", true) != 0)
return;
Dictionary<string, SolutionConfigurationEntry> cache = new Dictionary<string, SolutionConfigurationEntry> ();
Dictionary<string, string> ignoredProjects = new Dictionary<string, string> ();
SlnData slnData = GetSlnData (sln.RootFolder);
List<string> extras = new List<string> ();
for (int i = 0; i < sec.Count - 2; i ++) {
int lineNum = i + sec.Start + 1;
string s = lines [lineNum].Trim ();
extras.Add (s);
//Format:
// {projectGuid}.SolutionConfigName|SolutionPlatform.ActiveCfg = ProjConfigName|ProjPlatform
// {projectGuid}.SolutionConfigName|SolutionPlatform.Build.0 = ProjConfigName|ProjPlatform
// {projectGuid}.SolutionConfigName|SolutionPlatform.Deploy.0 = ProjConfigName|ProjPlatform
string [] parts = s.Split (new char [] {'='}, 2);
if (parts.Length < 2) {
LoggingService.LogDebug ("{0} ({1}) : Invalid format. Ignoring", sln.FileName, lineNum + 1);
continue;
}
string action;
string projConfig = parts [1].Trim ();
string left = parts [0].Trim ();
if (left.EndsWith (".ActiveCfg")) {
action = "ActiveCfg";
left = left.Substring (0, left.Length - 10);
} else if (left.EndsWith (".Build.0")) {
action = "Build.0";
left = left.Substring (0, left.Length - 8);
} else if (left.EndsWith (".Deploy.0")) {
action = "Deploy.0";
left = left.Substring (0, left.Length - 9);
} else {
LoggingService.LogWarning (GettextCatalog.GetString ("{0} ({1}) : Unknown action. Only ActiveCfg, Build.0 and Deploy.0 supported.",
sln.FileName, lineNum + 1));
continue;
}
string [] t = left.Split (new char [] {'.'}, 2);
if (t.Length < 2) {
LoggingService.LogDebug ("{0} ({1}) : Invalid format of the left side. Ignoring",
sln.FileName, lineNum + 1);
continue;
}
string projGuid = t [0].ToUpper ();
string slnConfig = t [1];
if (!slnData.ItemsByGuid.ContainsKey (projGuid)) {
if (ignoredProjects.ContainsKey (projGuid))
// already warned
continue;
LoggingService.LogWarning (GettextCatalog.GetString ("{0} ({1}) : Project with guid = '{2}' not found or not loaded. Ignoring",
sln.FileName, lineNum + 1, projGuid));
ignoredProjects [projGuid] = projGuid;
continue;
}
SolutionEntityItem item;
if (slnData.ItemsByGuid.TryGetValue (projGuid, out item) && item.SupportsConfigurations ()) {
string key = projGuid + "." + slnConfig;
SolutionConfigurationEntry combineConfigEntry = null;
if (cache.ContainsKey (key)) {
combineConfigEntry = cache [key];
} else {
combineConfigEntry = GetConfigEntry (sln, item, slnConfig);
combineConfigEntry.Build = false; // Not buildable by default. Build will be enabled if a Build.0 entry is found
cache [key] = combineConfigEntry;
}
/* If both ActiveCfg & Build.0 entries are missing
* for a project, then default values :
* ActiveCfg : same as the solution config
* Build : true
*
* ELSE
* if Build (true/false) for the project will
* will depend on presence/absence of Build.0 entry
*/
if (action == "ActiveCfg") {
combineConfigEntry.ItemConfiguration = FromSlnConfigurationId (projConfig);
} else if (action == "Build.0") {
combineConfigEntry.Build = true;
} else if (action == "Deploy.0") {
combineConfigEntry.Deploy = true;
}
}
extras.RemoveAt (extras.Count - 1);
}
slnData.SectionExtras ["ProjectConfigurationPlatforms"] = extras;
//.........这里部分代码省略.........
示例9: LoadSolution
//ExtendedProperties
// Per config
// Platform : Eg. Any CPU
// SolutionConfigurationPlatforms
//
SolutionFolder LoadSolution (Solution sol, string fileName, MSBuildFileFormat format, IProgressMonitor monitor)
{
string headerComment;
string version = GetSlnFileVersion (fileName, out headerComment);
ListDictionary globals = null;
SolutionFolder folder = null;
SlnData data = null;
List<Section> projectSections = null;
List<string> lines = null;
FileFormat projectFormat = Services.ProjectService.FileFormats.GetFileFormat (format);
monitor.BeginTask (GettextCatalog.GetString ("Loading solution: {0}", fileName), 1);
//Parse the .sln file
using (StreamReader reader = new StreamReader(fileName)) {
sol.FileName = fileName;
sol.ConvertToFormat (projectFormat, false);
folder = sol.RootFolder;
sol.Version = "0.1"; //FIXME:
data = new SlnData ();
folder.ExtendedProperties [typeof (SlnFileFormat)] = data;
data.VersionString = version;
data.HeaderComment = headerComment;
string s = null;
projectSections = new List<Section> ();
lines = new List<string> ();
globals = new ListDictionary ();
//Parse
while (reader.Peek () >= 0) {
s = GetNextLine (reader, lines).Trim ();
if (String.Compare (s, "Global", true) == 0) {
ParseGlobal (reader, lines, globals);
continue;
}
if (s.StartsWith ("Project")) {
Section sec = new Section ();
projectSections.Add (sec);
sec.Start = lines.Count - 1;
int e = ReadUntil ("EndProject", reader, lines);
sec.Count = (e < 0) ? 1 : (e - sec.Start + 1);
continue;
}
}
}
monitor.BeginTask("Loading projects ..", projectSections.Count + 1);
Dictionary<string, SolutionItem> items = new Dictionary<string, SolutionItem> ();
List<SolutionItem> sortedList = new List<SolutionItem> ();
foreach (Section sec in projectSections) {
monitor.Step (1);
Match match = ProjectRegex.Match (lines [sec.Start]);
if (!match.Success) {
LoggingService.LogDebug (GettextCatalog.GetString (
"Invalid Project definition on line number #{0} in file '{1}'. Ignoring.",
sec.Start + 1,
fileName));
continue;
}
try {
// Valid guid?
new Guid (match.Groups [1].Value);
} catch (FormatException) {
//Use default guid as projectGuid
LoggingService.LogDebug (GettextCatalog.GetString (
"Invalid Project type guid '{0}' on line #{1}. Ignoring.",
match.Groups [1].Value,
sec.Start + 1));
continue;
}
string projTypeGuid = match.Groups [1].Value.ToUpper ();
string projectName = match.Groups [2].Value;
string projectPath = match.Groups [3].Value;
string projectGuid = match.Groups [4].Value;
if (projTypeGuid == MSBuildProjectService.FolderTypeGuid) {
//Solution folder
SolutionFolder sfolder = new SolutionFolder ();
sfolder.Name = projectName;
MSBuildProjectService.InitializeItemHandler (sfolder);
MSBuildProjectService.SetId (sfolder, projectGuid);
List<string> projLines = lines.GetRange (sec.Start + 1, sec.Count - 2);
DeserializeSolutionItem (sol, sfolder, projLines);
foreach (string f in ReadFolderFiles (projLines))
//.........这里部分代码省略.........