From: Gert D. <dri...@us...> - 2004-12-13 07:46:08
|
Update of /cvsroot/nant/nant/src/NAnt.VSNet In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8626/src/NAnt.VSNet Modified Files: ManagedProjectBase.cs ProjectSettings.cs Log Message: App.config should not be considered an output file for Class Library projects Index: ManagedProjectBase.cs =================================================================== RCS file: /cvsroot/nant/nant/src/NAnt.VSNet/ManagedProjectBase.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ManagedProjectBase.cs 2 Dec 2004 06:02:07 -0000 1.5 --- ManagedProjectBase.cs 13 Dec 2004 07:45:58 -0000 1.6 *************** *** 137,142 **** case "None": if (elemFile.GetAttribute("RelPath") == "App.config") { ! ExtraOutputFiles[sourceFile] = ProjectSettings.OutputFileName ! + ".config"; } break; --- 137,145 ---- case "None": if (elemFile.GetAttribute("RelPath") == "App.config") { ! // App.config is only an output file for executable projects ! if (ProjectSettings.OutputType == ManagedOutputType.Executable || ProjectSettings.OutputType == ManagedOutputType.WindowsExecutable) { ! ExtraOutputFiles[sourceFile] = ProjectSettings.OutputFileName ! + ".config"; ! } } break; *************** *** 896,898 **** --- 899,924 ---- #endregion Private Static Fields } + + /// <summary> + /// Indentifies the different output types of a managed project. + /// </summary> + /// <remarks> + /// Visual Studio .NET does not support modules. + /// </remarks> + public enum ManagedOutputType { + /// <summary> + /// A class library. + /// </summary> + Library = 1, + + /// <summary> + /// A console application. + /// </summary> + Executable = 2, + + /// <summary> + /// A Windows program. + /// </summary> + WindowsExecutable = 3 + } } Index: ProjectSettings.cs =================================================================== RCS file: /cvsroot/nant/nant/src/NAnt.VSNet/ProjectSettings.cs,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** ProjectSettings.cs 2 Dec 2004 06:02:07 -0000 1.20 --- ProjectSettings.cs 13 Dec 2004 07:45:58 -0000 1.21 *************** *** 48,73 **** elemRoot); // initialize hashtable for holding string settings Hashtable htStringSettings = new Hashtable(); ! switch (elemSettings.Attributes["OutputType"].Value.ToLower(CultureInfo.InvariantCulture)) { ! case "library": _settings.Add("/target:library"); - _outputExtension = ".dll"; break; ! case "exe": _settings.Add("/target:exe"); - _outputExtension = ".exe"; // startup object only makes sense for executable assemblies htStringSettings["StartupObject"] = @"/main:""{0}"""; break; ! case "winexe": _settings.Add("/target:winexe"); - _outputExtension = ".exe"; // startup object only makes sense for executable assemblies htStringSettings["StartupObject"] = @"/main:""{0}"""; break; - default: - throw new ApplicationException(string.Format("Unknown output type: {0}.", elemSettings.Attributes["OutputType"].Value)); } --- 48,71 ---- elemRoot); + // determine output type of this project + _outputType = GetOutputType(elemSettings); + // initialize hashtable for holding string settings Hashtable htStringSettings = new Hashtable(); ! switch (_outputType) { ! case ManagedOutputType.Library: _settings.Add("/target:library"); break; ! case ManagedOutputType.Executable: _settings.Add("/target:exe"); // startup object only makes sense for executable assemblies htStringSettings["StartupObject"] = @"/main:""{0}"""; break; ! case ManagedOutputType.WindowsExecutable: _settings.Add("/target:winexe"); // startup object only makes sense for executable assemblies htStringSettings["StartupObject"] = @"/main:""{0}"""; break; } *************** *** 195,200 **** } public string OutputExtension { ! get { return _outputExtension; } } --- 193,214 ---- } + /// <summary> + /// Gets the output type of this project. + /// </summary> + public ManagedOutputType OutputType { + get { return _outputType; } + } + public string OutputExtension { ! get { ! switch (OutputType) { ! case ManagedOutputType.Library: ! return ".dll"; ! case ManagedOutputType.Executable: ! case ManagedOutputType.WindowsExecutable: ! default: ! return ".exe"; ! } ! } } *************** *** 246,249 **** --- 260,306 ---- #endregion Private Instance Properties + #region Protected Instance Methods + + /// <summary> + /// Determines the output type of the project from its XML definition. + /// </summary> + /// <param name="settingsXml">The XML definition of the project settings.</param> + /// <returns> + /// The output type of the project. + /// </returns> + /// <exception cref="BuildException"> + /// <para> + /// The output type of the project is not set in the specified XML + /// definition. + /// </para> + /// <para>-or-</para> + /// <para> + /// The output type of the project is not supported. + /// </para> + /// </exception> + protected virtual ManagedOutputType GetOutputType(XmlElement settingsXml) { + XmlAttribute outputTypeAttribute = settingsXml.Attributes["OutputType"]; + if (outputTypeAttribute == null) { + throw new BuildException(string.Format(CultureInfo.InvariantCulture, + "Project \"{0}\" is invalid: the output type is not set.", + Project.Name), Location.UnknownLocation); + } + + switch (outputTypeAttribute.Value.ToLower(CultureInfo.InvariantCulture)) { + case "library": + return ManagedOutputType.Library; + case "exe": + return ManagedOutputType.Executable; + case "winexe": + return ManagedOutputType.WindowsExecutable; + default: + throw new BuildException(string.Format(CultureInfo.InvariantCulture, + "Output type \"{0}\" of project \"{1}\" is not supported.", + outputTypeAttribute.Value, Project.Name), Location.UnknownLocation); + } + } + + #endregion Protected Instance Methods + #region Public Static Methods *************** *** 281,295 **** #region Private Instance Fields ! private ArrayList _settings; ! private FileInfo _applicationIcon; ! private ManagedProjectBase _project; ! private string _assemblyName; ! private string _assemblyOriginatorKeyFile; ! private string _outputExtension; ! private string _rootNamespace; ! private string _guid; ! private string _runPostBuildEvent; ! private string _preBuildEvent; ! private string _postBuildEvent; #endregion Private Instance Fields --- 338,352 ---- #region Private Instance Fields ! private readonly ArrayList _settings; ! private readonly FileInfo _applicationIcon; ! private readonly ManagedProjectBase _project; ! private readonly string _assemblyName; ! private readonly string _assemblyOriginatorKeyFile; ! private readonly string _rootNamespace; ! private readonly string _guid; ! private readonly string _runPostBuildEvent; ! private readonly string _preBuildEvent; ! private readonly string _postBuildEvent; ! private readonly ManagedOutputType _outputType; #endregion Private Instance Fields |