gpt4 book ai didi

MSBuild 托管属性与非托管属性

转载 作者:行者123 更新时间:2023-12-02 13:43:33 25 4
gpt4 key购买 nike

MSBuild 逻辑中有没有办法确定我正在运行托管代码还是非托管代码?不是 C++ 与 C#,而是托管与非托管?我想根据代码是托管还是非托管来不同地设置一些属性(通常只是版本信息)。

最佳答案

在用于托管编译的 vcxproj 文件中通常有两件事会发生变化(据我所知,至少我们在用于所有 cli 项目的主 c++/cli 属性表中是这样的:CLRSupport属性设置为 true,并且 ClCompile ItemGroup 将 CompileAsManaged 元数据设置为 true。您可以检查其中任何一个或两者。以下是打印值的目标:

<Target Name="CheckManaged">
<ItemGroup>
<ClCompile Include="dummy.cpp" />
</ItemGroup>

<PropertyGroup>
<CompileAsManaged>@(ClCompile->AnyHaveMetadataValue('CompileAsManaged','true'))</CompileAsManaged>
</PropertyGroup>

<Message Text="CompileAsManaged is $(CompileAsManaged) and CLRSupport is $(CLRSupport)" />

<ItemGroup>
<ClCompile Remove="dummy.cpp" />
</ItemGroup>
</Target>

如您所见,获取 CompileAsManaged 元数据值需要进行一些处理:我正在向 ClCompile 组添加一个项目,因为如果该组为空,则无法使用 CompileAsManaged;通常你可以忽略这个。

关于MSBuild 托管属性与非托管属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25896982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com