- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在MSBuild脚本中创建的项目组的范围设置方面遇到一些问题。基本上,我想要做的是有两个不同的目标-我们将它们称为RunUnitTests
和RunIntegrationTests
-生成一个名为TestAssemblies
的项目组,然后调用RunTests
,后者使用TestAssemblies
来确定要从中运行测试的程序集。
单元测试和集成测试的两个不同目标都依赖于构建目标,并从那里获得包含所有已编译程序集的项目组,但是由于RunTests
目标将在不同位置调用,因此它实际上不能依赖于它们中的任何一个。因此,我需要以某种方式将项目组传递给通用的testrunner目标。但是,这似乎是不可能的,因为对目标内的项目组所做的更改似乎仅限于在该目标内工作。
我看过these posts,但它们似乎仅能证实我的担心,并建议DependsOnTarget
作为一种解决方法-不适用于我,因为我需要在不同的运行位置从不同的地方获取物品。
这是我到目前为止所拥有的:
<Target Name="RunAllTests" DependsOnTarget="BuildProject">
<!-- In here, items created in BuildProject are available. -->
<CallTarget Targets="RunUnitTests;RunIntegrationTests">
</Target>
<Target Name="RunUnitTests" DependsOnTarget="BuildProject">
<!-- In here, items created in BuildProject are available. -->
<!-- One of those is @(UnitTestAssemblies) -->
<CreateItem Include="@(UnitTestAssemblies)">
<Output TaskParameter="Include" ItemName="TestAssemblies" />
</CreateItem>
<CallTarget Targets="RunTests" />
</Target>
<!-- Then there's a similar target named RunIntegrationTests, which does the
same as RunUnitTests except it includes @(IntegrationTestAssemblies) -->
<Target Name="RunTests">
<!-- Here, I'd like to access @(TestAssemblies) and pass them to the NUnit
task, but they have fallen out of scope. -->
</Target>
最佳答案
对目标内某个项目组的更改仅在更改的目标退出后才对其他目标可见。因此,要坚持使用测试程序集列表,您可能必须将设置目标的实际位置移动到其自己的目标,如下所示:
<Target Name="PrepareUnitTestList" DependsOnTarget="BuildProject">
<ItemGroup>
<TestAssemblies Include="@(UnitTestAssemblies)"/>
</ItemGroup>
</Target>
<Target Name="RunUnitTests" DependsOnTargets="PrepareUnitTestList">
<CallTarget Targets="RunTests"/>
</Target>
<Target Name="RunTests">
<Message Text="Test: %(TestAssemblies.Identity)"/>
</Target>
关于msbuild - MsBuild:通过CallTarget传递ItemGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6730710/
我不知道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
我是一名优秀的程序员,十分优秀!