Подтвердить что ты не робот

.csproj, специфичная для ItemGroup, работает для ссылок на сборку, но не включает контент?

Поскольку у нас есть три сборки, которые входят в явные версии x86 и x64, я отредактировал соответствующие файлы .csproj, чтобы использовать, например, такой блок:

  <ItemGroup Condition=" '$(Platform)' == 'x86' ">
    <Reference Include="CaliberRMSDK">
      <HintPath>..\Libraries\CaliberRMSDK_IKVM\32bit\CaliberRMSDK.dll</HintPath>
    </Reference>
    <Content Include="..\Libraries\CaliberRMSDK_IKVM\32bit\ikvm-native.dll">
      <Link>ikvm-native.dll</Link>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="..\Libraries\CaliberRMSDK_IKVM\32bit\JVM.dll">
      <Link>JVM.dll</Link>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
  <ItemGroup Condition=" '$(Platform)' == 'x64' ">
    <Reference Include="CaliberRMSDK">
      <HintPath>..\Libraries\CaliberRMSDK_IKVM\64bit\CaliberRMSDK.dll</HintPath>
    </Reference>
    <Content Include="..\Libraries\CaliberRMSDK_IKVM\64bit\ikvm-native.dll">
      <Link>ikvm-native.dll</Link>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="..\Libraries\CaliberRMSDK_IKVM\64bit\JVM.dll">
      <Link>JVM.dll</Link>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

При перезагрузке файла .csproj в Visual Studio 2010 и использовании "x86" в качестве платформы все работает отлично. При выборе "x64" в качестве платформы используется соответствующая 64-битная ссылка на сборку НО, связанная (<Content Include= ...>..) всегда использует 32-битные (и поэтому приложение не работает).

Там нет никакого CPU больше в файлах проекта, и я бы "ожидал", что он отлично работает для контента, тоже.. но это не так. Есть что-то, чего я не вижу?

4b9b3361

Ответ 1

Итак, это "только" проблема визуального/отображения. Внутри сборки используются правильные ссылки и т.д., Только VS2010 отображает неправильный. Все хорошо, просто не видно.

Ответ 2

Мы помещаем атрибут Condition в элемент Reference, и это работает нормально. Возможно, атрибут Condition также должен быть добавлен в элемент Content? (Вам действительно нужен как элемент Reference, так и элемент Content?) Например:

<Reference Include="SomeLib" Condition="$(Platform)=='x86'">
  <HintPath>..\..\ThirdParty\SomeLib\clr4\x86\SomeLib.dll</HintPath>
  <Private>False</Private>
</Reference>
<Reference Include="SomeLib" Condition="$(Platform)=='x64' Or $(Platform)=='AnyCPU'">
  <HintPath>..\..\ThirdParty\SomeLib\clr4\x64\SomeLib.dll</HintPath>
</Reference>

Ответ 3

Итак, на этот вопрос был дан ответ? Если нет, я бы рекомендовал переключить порядок элементовGroups и посмотреть, достигнут ли противоположный результат (что он работает в x64, но на x86 Visual Studio отображает неправильную ссылку).