- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想通过在 dotnet c# 中解析以下 xml 来了解 ItemGroup 的名称。我尝试了各种选择,但无法得到它。基本上我想知道有 ItemGroup ,它可以更多。无论如何我们可以加载此 xml 并获取 ItemGroup 的列表及其名称。
这里我希望 ItemGroup 名称为“cssfile_individual”,cssfile_individual2
<Project xmlns="http://schemas.microsoft.com/developer/MsBuild/2003">
<UsingTask TaskName="CssCompressorTask" AssemblyFile="Yahoo.Yui.Compressor.Build.MsBuild.dll" />
<UsingTask TaskName="JavaScriptCompressorTask" AssemblyFile="Yahoo.Yui.Compressor.Build.MsBuild.dll" />
<PropertyGroup>
</PropertyGroup>
<Target Name="Minify">
<ItemGroup>
<cssfile_individual Include="test1.css"/>
<cssfile_individual Include="test2.css"/>
<cssfile_individual Include="test3.css"/>
<cssfile_individual Include="test3.css"/>
</ItemGroup>
<ItemGroup>
<cssfile_individual2 Include="test1.css"/>
<cssfile_individual2 Include="test2.css"/>
<cssfile_individual2 Include="test3.css"/>
<cssfile_individual2 Include="test3.css"/>
</ItemGroup>
</Target>
</Project>
我试过如下
XmlDocument objXML = new XmlDocument();
objXML.Load(path);
然后开始生 child 。
示例 XML 如下所示
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/MsBuild/2003">
<UsingTask TaskName="CompressorTask"
AssemblyFile="D:\JsCssCompressor\JsCssCompressor\bin\Yahoo.Yui.Compressor.Build.MsBuild.dll" />
<Target Name="MyTaskTarget">
<ItemGroup>
<JavaScriptFiles Include="C:\Work\Purchase_Flow\eBizSol_App\Release\WebSites\Websites\McAfee.Consumer.Website\UIDesign\LegacySite\Scripts\FlexDashboard\AddDevice.js"/>
</ItemGroup>
<CompressorTask
JavaScriptCompressionType="YuiStockCompression"
JavaScriptFiles="@(JavaScriptFiles)"
ObfuscateJavaScript="True"
PreserveAllSemicolons="False"
DisableOptimizations="Nope"
EncodingType="Default"
DeleteJavaScriptFiles="false"
LineBreakPosition="-1"
JavaScriptOutputFile="C:\Work\Purchase_Flow\eBizSol_App\Release\WebSites\Websites\McAfee.Consumer.Website\UIDesign\LegacySite\Scripts\FlexDashboard\MAA2.0.js"
LoggingType="ALittleBit"
ThreadCulture="en-us"
IsEvalIgnored="false"
/>
</Target>
</Project>
最佳答案
使用 LINQ to XML
XDocument objXML = new XDocument();
objXML.Load(path);
您的 LINQ 代码将如下所示
var ItemGroups = from IG in objXML.Descendants("ItemGroup")
select new {
Children = LG.Descendants()
};
//Print Results
string str = "";
foreach (var IG in ItemGroups){
str += "Item Group Name: " + IG.Children[0].Name + Environment.NewLine;
foreach (var IGValue in IG.Children){
str += " " + IGValue.Attribute("Include").Value + Environment.NewLine;
}
}
引用资料
这是一个示例应用程序。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace testapp_xdocument_linq
{
class Program
{
static void Main(string[] args)
{
XNamespace ns = "http://schemas.microsoft.com/developer/msbuild/2003";
XDocument X = XDocument.Load("C:\\Users\\Brian\\Documents\\Visual Studio 2012\\Projects\\testapp_xdocument_linq\\testapp_xdocument_linq\\testapp_xdocument_linq.csproj");
var PropertyGroups = from PG in X.Descendants(ns + "PropertyGroup") select PG;
//Print Results
foreach (var element in PropertyGroups)
{
Console.WriteLine("First Descendant Name: " + element.Descendants().First().Name + Environment.NewLine);
}
Console.ReadLine();
}
}
}
这是一个全新的 C# 控制台应用程序。我正在加载项目自己的 .csproj 文件。
我无法针对您的示例 XML 执行此代码。我怀疑这是因为它破坏了 http://schemas.microsoft.com/developer/msbuild/2003 定义的模式.
关于c# - 从 MSBuild xml 获取 ItemGroup 集合及其项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15035922/
我不知道ItemGroup是否是正确的类型。根据选择,我将得到4个不同的 bool 值,它们是对还是错。 我想用“字符串”来填充ItemGroup,具体取决于对还是错。那有可能还是我应该使用什么? 例
在 MSBuild 12.0 中,我可以将文件包含在 中吗?仅当满足条件时? 我的用例是我想创建所有 .csproj 的集合.nuspec 的文件存在同名文件(不带扩展名)。 - root_dir\
我正在尝试从另一个项目组创建一个已筛选项目组,其中已筛选项目组将仅包含第一个项目组中具有指定文件扩展名的项目。 我收到以下错误: 错误 MSB4190:在此条件“'%(Extension)'=='.s
我有以下设置(为简洁起见,删除了无趣的 XML): 我的项目.fsproj ... MyTask.props
可以在 PropertyGroup 中将属性初始化为默认值像这样: MyDefaultValue 是否可以通过 Items 实现相同的目标?: 目前我正在做:
我的问题几乎与 Create an ItemGroup of strings in MSBuild 相同然而,那里提供的解决方案似乎仍然保留了现有的分隔符。这是我尝试执行的操作的简化片段:
我有一个自定义 MSBuild 任务来缩小一些 JavaScript 文件。我创建了一个 ItemGroup 来定义哪些文件要缩小,哪些文件不应该缩小。我的 .csproj 文件中有以下内容:
这是一个 MSBuild 脚本: dest\%(FileName)%(Extension) dest\%(FileName)%(Extens
有没有办法在不诉诸目标的情况下删除 ItemGroup 的内容?我正在寻找相当于: 谢谢 最佳答案 不可以,正如文档所述,Remove 只能包含在 Target 内的 ItemGroup 中
问题:未根据排除属性中传递的值正确构建 ItemGroups 数组。 如果您运行此脚本,它会创建一些示例文件,然后尝试根据包含/排除属性创建一个名为 TheFiles 的数组,问题是当排除不是硬编码或
有没有办法获取与给定项目关联的所有元数据键? 我想做如下的事情。 给定: val1 val2 val3 val4
我有一个脚本试图从特定目录中的所有文件构建一个 ItemGroup,同时排除具有特定名称的文件(无论扩展名如何)。 要排除的文件列表最初包含文件扩展名,我正在使用社区任务的 RegexReplace
我有一个 MSBuild ItemGroup,我希望能够在“构建后事件”中回显它。 但是当我尝试这样的命令时:echo My ItemGroup: @(Foo) 我得到错误: error MSB416
问题应该是什么: 这是我的ModuleCompilation.targets的内容文件 : 消息被写入控制台但文件没有移动,怎么会? 原问题(可以忽略): 我在我
我的解决方案有多个项目(因此也有子目录),并且每个项目文件夹中有一个“bin”文件夹。 我正在尝试在包含所有这些目录的 MSBuild 脚本中创建一个 ItemGroup。 我认为这已经足够了,但它不
我目前正在使用 MSBuild,在其中一个 vcxproj 文件中,我希望不同的 ItemGroup 有不同的 ItemDefinitionGroup,但不会相互覆盖,这样每个 ItemGroup 都
观察 msbuild 脚本的以下部分: 我想把它转换成 /ruleid:-Microsoft.Design#CA1000 /ruleid:-Microsoft.Design#CA100
是否可以在声明 ItemGroup 后修改它的元数据。 例如:
我非常好奇为什么我无法根据在目标内按预期工作的元数据条件在全局范围内创建项目。例如,这按预期工作: true false
我一直在努力从头开始创建我的 msbuild *.vcxproj 文件,以便更好地了解 msbuild 的功能。在像 this 这样的例子中对于 MSDN 上的示例,为什么有一个用于 ClCompil
我是一名优秀的程序员,十分优秀!