当前位置: 首页>>代码示例>>C#>>正文


C# IProject.AsXml方法代码示例

本文整理汇总了C#中IProject.AsXml方法的典型用法代码示例。如果您正苦于以下问题:C# IProject.AsXml方法的具体用法?C# IProject.AsXml怎么用?C# IProject.AsXml使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IProject的用法示例。


在下文中一共展示了IProject.AsXml方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: AddReference

        public AddReferenceResponse AddReference(IProject project, string reference)
        {
            var response = new AddReferenceResponse();

            var projectToReference = _solution.Projects.First(p => p.FileName.Contains(reference));

            var projectXml = project.AsXml();

            var referenceNodes = GetReferenceNodes(projectXml, "ProjectReference");
            
            var relativeProjectPath = project.FileName.GetRelativePath(projectToReference.FileName);

            var projectReferenceNode = CreateProjectReferenceNode(relativeProjectPath, projectToReference);

            var projectAlreadyAdded = referenceNodes.Any(n => n.Attribute("Include").Value.Equals(relativeProjectPath));

            if (IsCircularReference(project, projectToReference))
            {
                response.Message = "Reference will create circular dependency";
                return response;
            }

            if (!projectAlreadyAdded)
            {
                var projectContainsProjectReferences = referenceNodes.Count > 0;

                if (projectContainsProjectReferences)
                {
                    referenceNodes.First().Parent.Add(projectReferenceNode);
                }
                else
                {
                    var projectItemGroup = new XElement(MsBuildNameSpace + "ItemGroup");
                    projectItemGroup.Add(projectReferenceNode);
                    projectXml.Element(MsBuildNameSpace + "Project").Add(projectItemGroup);
                }

                project.AddReference(new ProjectReference(_solution, projectToReference.Title));
                project.Save(projectXml);
                response.Message = string.Format("Reference to {0} added successfully", projectToReference.Title);
            }
            else
            {
                response.Message = "Reference already added";
            }

            return response;
        }
开发者ID:dykim07,项目名称:vim-ide,代码行数:48,代码来源:AddProjectReferenceProcessor.cs

示例2: AddReference

        public AddReferenceResponse AddReference(IProject project, string reference)
        {
            var response = new AddReferenceResponse();

            var projectXml = project.AsXml();

            var referenceNodes = GetReferenceNodes(projectXml, "Reference");

            var referenceAlreadyAdded = referenceNodes.Any(n => n.Attribute("Include").Value.Equals(reference));


            if (!referenceAlreadyAdded)
            {
                var fileReferenceNode = CreateReferenceNode(reference);
                if (referenceNodes.Count > 0)
                {
                    referenceNodes.First().Parent.Add(fileReferenceNode);
                }
                else
                {
                    var projectItemGroup = new XElement(MsBuildNameSpace + "ItemGroup");
                    projectItemGroup.Add(fileReferenceNode);
                    projectXml.Element(MsBuildNameSpace + "Project").Add(projectItemGroup);
                }

                var assemblyPath = project.FindAssembly (reference);
                if (assemblyPath != null)
                {
                    project.AddReference (assemblyPath);
                    project.Save (projectXml);
                    response.Message = string.Format ("Reference to {0} added successfully", reference);
                }
                else
                {
                    response.Message = "Did not find " + reference;
                }
            }
            else
            {
                response.Message = "Reference already added";
            }

            return response;
        }
开发者ID:jcd-as,项目名称:omnisharp-server,代码行数:44,代码来源:AddGacReferenceProcessor.cs

示例3: AddReference

        public AddReferenceResponse AddReference(IProject project, string reference)
        {
            var response = new AddReferenceResponse();

            var projectXml = project.AsXml();
            
            var referenceNodes = GetReferenceNodes(projectXml, "Reference");

            var relativeReferencePath = project.FileName.GetRelativePath(reference);

            var referenceName = reference.Substring(reference.LastIndexOf("\\") + 1).Replace(".dll", "");

            var referenceAlreadyAdded = referenceNodes.Any(n => n.Attribute("Include").Value.Equals(referenceName));

            var fileReferenceNode = CreateReferenceNode(relativeReferencePath, referenceName);

            if (!referenceAlreadyAdded)
            {
                if (referenceNodes.Count > 0)
                {
                    referenceNodes.First().Parent.Add(fileReferenceNode);
                }
                else
                {
                    var projectItemGroup = new XElement(MsBuildNameSpace + "ItemGroup");
                    projectItemGroup.Add(fileReferenceNode);
                    projectXml.Element(MsBuildNameSpace + "Project").Add(projectItemGroup);
                }

                project.AddReference(reference.LowerCaseDriveLetter());
                project.Save(projectXml);

                response.Message = string.Format("Reference to {0} added successfully", referenceName);
            }
            else
            {
                response.Message = "Reference already added";
            }

            return response;

        }
开发者ID:sphynx79,项目名称:dotfiles,代码行数:42,代码来源:AddFileReferenceProcessor.cs


注:本文中的IProject.AsXml方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。