public ProjectFile(string path, string buildAction, string content, CopyToOutputDirectory copyToOutputDirectory, IReadOnlyDictionary <string, string> additionalMsBuildProperties) { Path = path; Content = content; BuildAction = buildAction; CopyToOutputDirectory = copyToOutputDirectory; AdditionalMsBuildProperties = additionalMsBuildProperties; }
protected void CheckCopyToOutput(ProjectFile file, CopyToOutputDirectory expected) { file.Check( i => i.CopyToOutput == expected, String.Format( "Project file '{0}' is expected to have 'Copy to Output Directory' set to '{1}', but now it is '{2}'.", file.FullName, expected, file.CopyToOutput)); }
/// <summary> /// Builds properties collection for configuration file. /// </summary> private static Dictionary <string, string> BuildConfigProperties( ProjectItemType type, CopyToOutputDirectory copyToOutput) { Dictionary <string, string> properties = new Dictionary <string, string>(); properties["BuildAction"] = type.ToString(); properties["CopyToOutput"] = copyToOutput.ToString(); return(properties); }
public static string GetCopyToOutputDirectoryString(this CopyToOutputDirectory fileCopyToOutputDirectory) { switch (fileCopyToOutputDirectory) { case CopyToOutputDirectory.CopyIfNewer: return("PreserveNewest"); case CopyToOutputDirectory.CopyAlways: return("Always"); default: throw new ArgumentOutOfRangeException(nameof(fileCopyToOutputDirectory), fileCopyToOutputDirectory, null); } }
/// <summary> /// Checks properties for configuration file. /// </summary> private static void CheckConfigProperties( string configFileName, ProjectItemType type, CopyToOutputDirectory copyToOutput) { IEnumerable <ProjectItem> items = ProjectHelper.GetProjectItems() .Where(item => Path.GetFileName(item.FullName) == configFileName); if (items.Count() != 1) { bool ignore = false; if (configFileName == "Web.config" && items.Count() > 0) { ignore = true; } if (!ignore) { RaiseError.WrongConfigFileLocation(configFileName); } } foreach (ProjectItem config in items) { StringBuilder message = new StringBuilder(); string description; if (!ValidationHelper.CheckProperties( BuildConfigProperties(config.Type, config.CopyToOutput), BuildConfigProperties(type, copyToOutput), new Dictionary <string, string>(), out description)) { message.Append(description); } if (message.Length == 0) { continue; } RaiseError.WrongFileProperties(configFileName, message.ToString()); } }
internal protected override void Write(Project project, MSBuildItem buildItem) { base.Write(project, buildItem); buildItem.Metadata.SetValue("DependentUpon", DependsOn, FilePath.Empty, relativeToPath: FilePath.ParentDirectory); buildItem.Metadata.SetValue("SubType", ContentType, ""); buildItem.Metadata.SetValue("Generator", Generator, ""); buildItem.Metadata.SetValue("CustomToolNamespace", CustomToolNamespace, ""); buildItem.Metadata.SetValue("LastGenOutput", LastGenOutput, ""); buildItem.Metadata.SetValue("Link", Link, FilePath.Empty, relativeToProject: false); buildItem.Metadata.SetValue("CopyToOutputDirectory", CopyToOutputDirectory.ToString(), "None"); buildItem.Metadata.SetValue("Visible", Visible, true); var resId = ResourceId; // For EmbeddedResource, emit LogicalName only when it does not match the default msbuild resource Id if (project is DotNetProject && BuildAction == MonoDevelop.Projects.BuildAction.EmbeddedResource && ((DotNetProject)project).GetDefaultMSBuildResourceId(this) == resId) { resId = ""; } buildItem.Metadata.SetValue("LogicalName", resId, ""); }
public ProjectFile(string path, string buildAction, string content, CopyToOutputDirectory copyToOutputDirectory = CopyToOutputDirectory.DoNotCopy) : this(path, buildAction, content, copyToOutputDirectory, new Dictionary <string, string>()) { }
void SetCopyToOutputDirectory(object value) { CopyToOutputDirectory copyToOutputDirectory = ConvertToCopyToOutputDirectory(value); projectItem.CopyToOutputDirectory = copyToOutputDirectory; }
/// <summary> /// Builds properties collection for configuration file. /// </summary> private static Dictionary<string, string> BuildConfigProperties( ProjectItemType type, CopyToOutputDirectory copyToOutput) { Dictionary<string, string> properties = new Dictionary<string, string>(); properties["BuildAction"] = type.ToString(); properties["CopyToOutput"] = copyToOutput.ToString(); return properties; }
/// <summary> /// Checks properties for configuration file. /// </summary> private static void CheckConfigProperties( string configFileName, ProjectItemType type, CopyToOutputDirectory copyToOutput) { IEnumerable<ProjectItem> items = ProjectHelper.GetProjectItems() .Where(item => Path.GetFileName(item.FullName) == configFileName); if (items.Count() != 1) { bool ignore = false; if (configFileName == "Web.config" && items.Count() > 0) ignore = true; if (!ignore) RaiseError.WrongConfigFileLocation(configFileName); } foreach (ProjectItem config in items) { StringBuilder message = new StringBuilder(); string description; if (!ValidationHelper.CheckProperties( BuildConfigProperties(config.Type, config.CopyToOutput), BuildConfigProperties(type, copyToOutput), new Dictionary<string, string>(), out description)) { message.Append(description); } if (message.Length == 0) continue; RaiseError.WrongFileProperties(configFileName, message.ToString()); } }
/// <summary> /// Gets project item from an XML node. /// </summary> private static ProjectItem GetProjectItem(XmlNode node) { ProjectItemType type; switch (node.Name) { case "None": type = ProjectItemType.None; break; case "Compile": type = ProjectItemType.Compile; break; case "Content": type = ProjectItemType.Content; break; case "EmbeddedResource": type = ProjectItemType.EmbeddedResource; break; case "EntityDeploy": type = ProjectItemType.EntityDeploy; break; case "Resource": type = ProjectItemType.Resource; break; case "Shadow": type = ProjectItemType.Shadow; break; case "ApplicationDefinition": type = ProjectItemType.ApplicationDefinition; break; case "Page": type = ProjectItemType.Page; break; case "ServiceDefinition": type = ProjectItemType.ServiceDefinition; break; case "ServiceConfiguration": type = ProjectItemType.ServiceConfiguration; break; case "PublishProfile": type = ProjectItemType.PublishProfile; break; case "SplashScreen": type = ProjectItemType.SplashScreen; break; default: throw new InvalidOperationException( String.Format("Unknown project node name: {0}.", node.Name)); } string fullName = node.Attributes["Include"].Value; CopyToOutputDirectory copyToOutput = CopyToOutputDirectory.None; if (node.HasChildNodes) { Dictionary <string, string> properties = PropertiesHelper.ParseFromXml(node); string copyToOutputKey = "/{0}/CopyToOutputDirectory".Display(node.Name); if (properties.ContainsKey(copyToOutputKey)) { string copyToOutputValue = properties[copyToOutputKey]; switch (copyToOutputValue) { case "PreserveNewest": copyToOutput = CopyToOutputDirectory.PreserveNewest; break; case "Always": copyToOutput = CopyToOutputDirectory.Always; break; default: throw new InvalidOperationException( String.Format("Unknown copying to output value: {0}.", copyToOutputValue)); } } } return(new ProjectItem { FullName = fullName, Type = type, CopyToOutput = copyToOutput }); }