如何在Visual Studio中获取活动解决方案平台用于项目引用?
解决AnyCPU项目根据活动解决方案平台引用不同资源项目的问题
方案1:直接使用$(SolutionPlatform)变量
VS在构建时会自动传递$(SolutionPlatform)属性,它的值就是当前选中的活动解决方案平台(比如x86、x64),和项目自身的Platform设置无关。你可以直接把原代码里的$(Platform)替换成这个变量:
<ItemGroup Condition="'$(SolutionPlatform)'=='x86'"> <ProjectReference Include="..\Resources.x86\Resources.x86.csproj" /> </ItemGroup> <ItemGroup Condition="'$(SolutionPlatform)'=='x64'"> <ProjectReference Include="..\Resources.x64\Resources.x64.csproj" /> </ItemGroup>
如果用命令行构建,手动传递参数即可:msbuild /p:SolutionPlatform=x64。
方案2:在配置管理器中添加自定义属性
如果$(SolutionPlatform)在你的VS版本中不生效,可以给项目配置绑定自定义属性:
- 打开配置管理器,选中目标项目,点击「配置」列的下拉框,选择「<编辑...>」
- 针对每个解决方案平台(x86/x64)对应的项目配置(比如Debug/Release),添加自定义属性:x86对应
ResourcePlatform=x86,x64对应ResourcePlatform=x64 - 然后在.csproj中用这个自定义变量判断:
<ItemGroup Condition="'$(ResourcePlatform)'=='x86'"> <ProjectReference Include="..\Resources.x86\Resources.x86.csproj" /> </ItemGroup> <ItemGroup Condition="'$(ResourcePlatform)'=='x64'"> <ProjectReference Include="..\Resources.x64\Resources.x64.csproj" /> </ItemGroup>
方案3:用解决方案级Props文件统一管理
如果多个项目都需要这个逻辑,可以在解决方案根目录创建Directory.Build.props文件,统一配置引用规则:
<Project> <PropertyGroup> <!-- 根据解决方案平台设置资源项目路径 --> <ResourceProjectPath Condition="'$(SolutionPlatform)'=='x86'">..\Resources.x86\Resources.x86.csproj</ResourceProjectPath> <ResourceProjectPath Condition="'$(SolutionPlatform)'=='x64'">..\Resources.x64\Resources.x64.csproj</ResourceProjectPath> </PropertyGroup> <ItemGroup> <ProjectReference Include="$(ResourceProjectPath)" /> </ItemGroup> </Project>
所有项目会自动继承这个文件的配置,不用逐个修改.csproj。
内容的提问来源于stack exchange,提问作者el_zilcho
相关产品推荐
相关产品推荐

