- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
执行摘要:我想根据仅在构建管道后期出现的条件在属性组中设置属性,并且正在寻找一种方法来更早地解决这个问题。
我有一个相当简单的 Directory.build.props
文件
<Project>
<PropertyGroup>
<MyMode>Default</MyMode>
</PropertyGroup>
<!-- This one overrides the default group above -->
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<MyMode>Changed to Debug</MyMode>
</PropertyGroup>
<!-- This one is not applied -->
<PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'v4.7.2' ">
<MyMode>Framework</MyMode>
</PropertyGroup>
<Target Name="Stats" AfterTargets="Build">
<Message Importance="High" Text="::::: Mode set to $(MyMode)" />
<Message Importance="High" Text="::::: Target Framework set to $(TargetFrameworkVersion)" />
</Target>
</Project>
以及一个简单的项目结构
E:.
│ Directory.build.props
│ MSBuild_Test.sln
│
├───ConsoleAppNet
│ App.config
│ ConsoleAppNet.csproj
│ Program.cs
│
└───MSBuild_Test
Class1.cs
LibStandard.csproj
LibStandard
是一个 .net 标准库,ConsoleAppNet
是一个 .net 框架项目,它也具有对 LibStandard
的构建依赖性
当我执行上面的 msbuild 脚本时,我得到了这个输出
LibStandard -> E:\temp\MSBuild_Test\MSBuild_Test\bin\Debug\netstandard2.0\LibStandard.dll
::::: Mode set to Changed to Debug
::::: Target Framework set to v2.0
ConsoleAppNet -> E:\temp\MSBuild_Test\ConsoleAppNet\bin\Debug\ConsoleAppNet.exe
::::: Mode set to Changed to Debug
::::: Target Framework set to v4.7.2
如您所见,控制台输出本应触发属性组,条件是 MyMode
为 Framework
,但没有成功。这个从未匹配过:
<PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'v4.7.2' ">
<MyMode>Framework</MyMode>
</PropertyGroup>
有没有一种好的方法可以根据上述条件在加载期间应用PropertyGroups
?
我知道我可以在目标中放置 PropertyGroup 覆盖,例如:
<Target Name="TooLate" BeforeTargets="BeforeBuild" Condition=" '$(TargetFrameworkVersion' == 'v4.7.2' ">
<PropertyGroup >
<MyMode>Framework</MyMode>
</PropertyGroup>
</Target>
它也能正确执行,但此时我无法设置重要的其他变量。
我的意图是根据不同的条件重定向输出目录。当我在目标中设置 $(OutputPath)
时,已经太晚了。该项目忽略此项目的整个构建的此输出:
<Target Name="TooLate" BeforeTargets="BeforeBuild" Condition=" '$(TargetFrameworkVersion)' == 'v4.7.2' ">
<PropertyGroup >
<OutputPath>New_Output_Directory</OutputPath>
</PropertyGroup>
</Target>
我什至可以回显 OutputPath
变量,它指向正确的值,但构建使用旧值而不重定向输出。
最佳答案
高五,我找到了所有即将到来的 Samuels 询问同一问题的解决方案。
在导入 Directory.build.props
时,尚未导入其他属性(例如 TargetFramework),默认为空。这就是对它们的检查失败的原因。请改用 Directory.build.targets
!
Directory.build.props
非常很早就导入,允许您在开始时设置属性Directory.build.targets
很晚导入,允许您自定义构建链这里有一些关于 msbuild 的非常有用的页面
这是来自 paragraph on the customization page 的引述(只要当前文件还活着......)
Import order
Directory.Build.props is imported very early in Microsoft.Common.props, and properties defined later are unavailable to it. So, avoid referring to properties that are not yet defined (and will evaluate to empty).
Directory.Build.targets is imported from Microsoft.Common.targets after importing .targets files from NuGet packages. So, it can override properties and targets defined in most of the build logic, but sometimes you may need to customize the project file after the final import.
通过阅读本文,目标的含义有些模糊,但 Directory.Build.targets
是覆盖属性和使用条件检查的最佳位置。
关于每个项目的 msbuild Directory.build.props 级联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60202673/
当我尝试构建我的项目时,我遇到了这样的错误: FAILURE: Build failed with an exception. * What went wrong: Execution failed
我正在尝试从 Here 构建适用于 linux 3.7 内核的 Mali 驱动程序. 有一个单独的构建脚本,例如, #!/bin/bash export KDIR=/path/to/kernel/di
有没有一种方法可以使用普通的 lisp 创建目录。我想先创建一个文件夹,然后将我的 .txt .png 文件放入其中。我知道首先我可以在外部创建文件夹,然后使用 with-open-file 等在目录
Visual Studio 提示每次编译警告 MSB8029:中间目录或输出目录不能位于临时目录下,因为它可能导致增量构建出现问题。 我正在检查项目并更改了输出目录和中间目录,但我仍然在我的解决方案中
Visual Studio 提示每次编译警告 MSB8029:中间目录或输出目录不能位于临时目录下,因为它可能导致增量构建出现问题。 我正在检查项目并更改了输出目录和中间目录,但我仍然在我的解决方案中
我的客户安装了 Keycloak 以从 AWS Cognito 代理用户。 我需要这个 Keycloak 来代理来自 Azure Active Directory 的用户。 客户拥有 AAD 的 OF
我想从 macOS 上 parallel 命令的所有潜力中受益(似乎存在 2 个版本,GNU 和 Ole Tange 的版本,但我不确定)。 使用以下命令: parallel -j8 find {}
我需要实现一个 Active Directory(本地)管理器,用户可以在其中执行所有任务,例如添加用户、删除用户、分配许可证和分配组等。用户有用户名、密码和域 Controller 名称,所以他只需
我正在编写一个使用PHP adLDAP库与Active Directory交互的应用程序。 为了测试该应用程序,我需要使用Active Directory架构的本地LDAP DB以及示例数据。 我已经
我有一个包含两个域 AA.RR.COM 和 BB.RR.COM 的 Active Directory 林,其中包含用户和组。我需要搜索两个域中的用户,同时查询其中一个域(例如 AA.RT.COM)如何
我使用 Proxy-Address 属性作为确定用户电子邮件地址的主要方法(我只关心以“SMTP:”或“smtp:”为前缀的地址,此外,我使用以大写字母为前缀的地址SMTP 来确定主地址 - 这不是
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
所以我有一个目录 - 让我们说/dir/。在里面我有这些文件夹-/目录/fold1//目录/fold2//dir/fold3/ 这些文件夹 (fold1,2,3) 中的每一个都可能包含一个名为 foo
我正在使用 PHPmotion 在我本地的 ubuntu 机器上。 优步上传者在 phpmotion 中用于将文件上传到服务器。这是使用 perl 脚本(位于“ www/cgi-bin ”)上传文件。
我正在为我的公司开发一个基于 Web 的 Intranet。我只想知道用户使用事件目录登录详细信息登录应用程序是一件好事,还是我应该与应用程序数据库一起创建登录名。如果有什么比这更好的,请提出建议。这
我们有带有 AD 模块 1.0.4 的 Sitecore 6.5。 DEPARTMENT\SitecoreUsers AD 组中的用户可以登录 Sitecore,但 DEPARTMENT\Siteco
我使用的 AD 设置具有存储为(多个)安全组成员的用户。 我正在使用读取用户的 memberof 属性的软件来计算访问权限。 在 AD Explorer 中,我可以看到用户的 memberof 属性显
我们有一个在 .NET 上编写的 SaaS 应用程序,我们需要为我们的客户提供各种 SSO 方法。 不久前,我们对 OpenID 进行了标准化,希望这会成为一个通用标准,让我们不必支持不同的标准。不幸
我有 .Net 代码可以读取/写入我们本地的 Active Directory 域。阅读部分已经过测试并且工作正常,但我想测试“写作”部分。我的应用程序将修改事件目录中的一些用户配置文件,但我不想在实
我正在运行一个 ASP.NET 4.0 应用程序,它使用用户名(即 HttpContext.Current.Request.LogonUserIdentity.Name.ToString())来管理对
我是一名优秀的程序员,十分优秀!