如何从C#csproj文件中引用解决方案的平台?

时间:2013-06-27 22:03:16

标签: c# msbuild csproj

我有一些构建为AnyCPU的csproj文件,它们附带了一些为特定体系结构构建的本机组件。这些文件需要放在同一个位置,所以我想根据当前选择的平台和配置来设置输出目录:

<PropertyGroup>
  <OutputPath>$(SolutionDir)\bin\$(Configuration)_$(Platform)\</OutputPath>
</PropertyGroup>

不幸的是,因为这是在AnyCPU项目中,而不是产生$(SolutionDir)\ bin \ Release_x64 \的输出目录,它产生$(SolutionDir)\ bin \ Release_AnyCPU的输出目录。

我想避免为这个库创建新的bitness特定版本。我只是希望构建将文件放在正确的位置。

csproj如何知道整个构建的平台是什么?

1 个答案:

答案 0 :(得分:3)

$(Platform)值与托管项目完全无关。它不会以任何方式影响项目的构建方式和运行方式。决定体系结构的抖动是在运行时发生的,而不是构建时间。

任何效果的唯一设置是Project + Properties,Build选项卡,Platform target。此设置的值为由$(平台)确定。自VS2010以来,这引起了巨大的混乱。

您现在应该看到解决方案,因为平台名称无关紧要,您可以简单地使其与C ++项目的平台名称相同。如有必要,将x64和Win32配置添加到托管项目。并删除 AnyCPU配置,因为您不再需要它了。内置+配置管理器,以确保所有项目使用相同的平台。问题解决了。