引用 Visual Studio 中的项目并为特定平台构建它

Reference a project in Visual Studio and build it for a specific platform

我有一个应该为 x86 构建的项目 A,它依赖于另一个为 x64 构建的项目 B。我当然可以按原样构建它,但我不希望出现运行时问题。

所以我的想法是设置项目 A,这样如果我想为 x86 构建它,我可以参考项目 B 但它是为 x86 构建的,如果我想为 x64 构建项目 A 那么我参考项目 B,但它是为 x64 构建的。这可能吗?

我在项目 A 的 .csproj 中添加了一个条件,例如:

<ItemGroup Condition=" '$(Platform)' == 'x86' ">

    <ProjectReference Include="..\Project B\projB.csproj">
      <Project>{678c5dc7-7a1c-45g3-bffe-a4754c64f027}</Project>
      <Name>projB</Name>
    </ProjectReference>
</ItemGroup>

<!-- x64 specific referneces -->
<ItemGroup Condition=" '$(Platform)' == 'x64' ">

    <ProjectReference Include="..\Project B\projB.csproj">
      <Project>{678c5dc7-7a1c-45g3-bffe-a4754c64f027}</Project>
      <Name>projB</Name>
    </ProjectReference>
</ItemGroup>

但我不知道如何为特定平台构建引用的项目。我知道我可以只获取两个版本的 .dll 并为正常引用应用条件,但想看看这是否可行。可能吗?我是否需要两个独立的相同项目但具有不同的目标平台来执行此操作?

如果你能帮助我,我将不胜感激,谢谢!

Reference a project in Visual Studio and build it for a specific platform

项目参考是完全不同的。而你提供的是基于项目A在不同平台上构建项目。根据A中的平台变化,项目B不会使用相应版本的平台构建项目B。

Project Reference其实就是先建工程B再建工程A,引用对应的工程 B.需要重新配置。

更新

你的情况,在build工程A的时候,有一个类似Condition=" '$(Platform)' == 'x86' "的条件,只是基于工程A当前的平台,但是这个参数不能传递给工程B来编译工程作为 x86。所以你应该

因此,需要手动更改B的平台才能达到目的。

解决方案

1) Build-->Configuration Manager 并像这样更改以构建您的项目。

2) 当您使用 x86 构建项目 A 时,您应该首先更改项目 B x86平台,当你对x64做同样的操作时,你也应该对项目B做同样的操作。

右键单击您的项目 A 和 B-->Properties-->Build--> 将 Platform target 更改为 x64 或x86。

那么就可以在工程A的ouputpath文件夹下得到同平台的输出文件。

另外,可以尝试同时基于x64x86平台搭建Project B(可参考) 然后像项目 A 中的 xml 代码一样使用(根据 x64 或 x86 平台)来引用(程序集引用)相应的项目 B.dll.

希望对您有所帮助。