提问人:george7378 提问时间:9/28/2023 更新时间:9/28/2023 访问量:79
有没有办法知道 Visual Studio 中的活动解决方案平台?
Is there a way to know the active solution platform in Visual Studio?
问:
我正在 Visual Studio 中创建一个 C# 解决方案,我希望在某些项目中的行为略有不同,具体取决于活动解决方案平台的设置。请参阅下面的配置管理器:
基本上,在一些.csproj文件中,我想根据活动的解决方案平台引用不同的资源项目,有点像这样:
<ItemGroup Condition="'$(Platform)'=='x86'">
<ProjectReference Include="..\Resources.x86\Resources.x86.csproj" />
</ItemGroup>
<ItemGroup Condition="'$(Platform)'=='x64'">
<ProjectReference Include="..\Resources.x64\Resources.x64.csproj" />
</ItemGroup>
上面的问题是我的代码本身不是特定于平台的,所以所有的项目都会被编译为 AnyCPU,所以这个值不会反映活动的解决方案平台。$(Platform)
是否有另一个变量可用于获取活动解决方案平台,而不是为项目选择的平台?或者,也许有一种方法可以将自定义变量附加到配置管理器,以反映我想要的值?$
如果我通过命令行运行构建,这将很容易,然后我可以传入类似的东西,但从 VS 中执行似乎更尴尬。/p:ResourceProjectPath=..\Resources.x64\Resources.x64.csproj
答:
1赞
Bowman Zhu-MSFT
9/28/2023
#1
不,没有这样的变量。
查看此官方文件:
由此,您将知道无法获得此值的常见变量。
而其他宏将能够签入 C++ 项目属性(只有 CPP 项目有这个接口来检查所有变量)。
在这个地方,您将知道没有内置变量来实现这一点。
然后,如果检查解决方案内容,会发现没有以明文形式存储此信息的地方(.sln 只有所有平台,没有显示活动平台。
我找到了一种可能能够获得这些未公开信息的方法:
DTE。Solution.SolutionBuild.ActiveConfiguration
无论如何,这不是通过简单的 csproj 结构可以实现的。
评论
0赞
george7378
9/28/2023
是的,看起来你是对的 - 我可以使用一组自定义配置,就像其他评论建议的那样,只查看 $(Configuration) 值,但最终我决定专门为 x86 或 x64 编译,而不是使用 AnyCPU。
评论