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



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

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

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

我想避免制作这个库的新的比特特定版本。我只是希望构建能够将文件放在正确的位置。

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

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

唯一具有任何效果的设置是Project+Properties、Build选项卡、Platform target。此设置的值是,而不是由$(平台)决定。自VS2010以来,这已经造成了巨大的混乱。

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

相关内容

最新更新