Ссылка на проект в Visual Studio и сборка для определенной платформы c - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть проект A, который должен быть построен для x86, и это зависит от другого проекта B, который построен для x64. Я могу построить его как есть, но я не хотел бы, чтобы во время выполнения возникали проблемы.

Так что идея состоит в том, чтобы я настроил проект A так, чтобы, если я хочу собрать его для x86, я мог ссылаться на проект B, но Я собираю его для x86, и если я хочу создать проект A для x64, я ссылаюсь на проект B, но собираю его для x64. Возможно ли это?

Я поместил условие в .csproj проекта A, например:

<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>

Но я не знаю, как получить эту ссылочную сборку проекта для указанного c Платформа. Я знаю, что могу просто взять .dll из двух версий и применить условие для нормальных ссылок, но хотел посмотреть, является ли это жизнеспособным. Является ли это возможным? Будут ли мне нужны два отдельных идентичных проекта, но с разными целевыми платформами, чтобы сделать это?

Буду признателен, если вы поможете мне, спасибо!

1 Ответ

0 голосов
/ 27 апреля 2020

Ссылка на проект в Visual Studio и сборка его для конкретной платформы

Ссылка на проект совершенно другая. И то, что вы предоставляете - это построить проект на разных платформах на основе проекта A . Проект B не будет использовать соответствующую версию платформы для сборки Проекта B в соответствии с изменением платформы в A .

И Ссылка на проект фактически состоит в том, чтобы сначала построить проект B, а затем построить проект A , Ссылка на соответствующий проект B . Он должен быть настроен заново.

Обновление

В вашей ситуации, когда вы строите проект A, он имеет условие типа Condition=" '$(Platform)' == 'x86' ", оно основано только на текущая платформа проекта A, но этот параметр нельзя передать в проект B для компиляции проекта как x86. Таким образом, вы должны

Поэтому , вам нужно вручную изменить платформу на B , чтобы достичь своей цели.

Решение

1) Build -> Configuration Manager и измените его так, чтобы построить свой проект.

enter image description here

или

enter image description here

2) При сборке Porject A с x86, вы должны сначала изменить Project B на x86 платформу, и когда вы делаете то же самое с x64, вы должны также сделать ту же операцию для Project B .

Щелкните правой кнопкой мыши по проектам A и B -> Properties -> Build -> измените Цель платформы на x64 или x86.

и , затем вы можете получить тот же выходной файл платформы в папке ouputpath проекта A.

Кроме того, , вы можете попытаться собрать проект B основанный на платформе x64, x86 одновременно (может ссылаться на эту ссылку ), а затем использовать как ваш xml код в Project A (в соответствии с платформой x64 или x86) для ссылки ( ссылка на сборку) соответствующего проекта B.dll.

Надеюсь, что это может помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...