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));
		}
Пример #3
0
        /// <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);
        }
Пример #4
0
 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));
 }
        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);
            }
        }
Пример #6
0
        /// <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());
            }
        }
Пример #7
0
        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, "");
        }
Пример #8
0
 public ProjectFile(string path, string buildAction, string content, CopyToOutputDirectory copyToOutputDirectory = CopyToOutputDirectory.DoNotCopy) :
     this(path, buildAction, content, copyToOutputDirectory, new Dictionary <string, string>())
 {
 }
Пример #9
0
        void SetCopyToOutputDirectory(object value)
        {
            CopyToOutputDirectory copyToOutputDirectory = ConvertToCopyToOutputDirectory(value);

            projectItem.CopyToOutputDirectory = copyToOutputDirectory;
        }
Пример #10
0
		/// <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;
		}
Пример #11
0
		/// <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());
			}
		}
Пример #12
0
        /// <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
            });
        }