Скомпилируйте управляемую сборку C ++ против определенной версии .NET (VS2008) - PullRequest
0 голосов
/ 16 сентября 2011

У меня странная проблема с моей управляемой сборкой C ++. Несмотря на то, что у меня есть проект C # и управляемый проект C ++ (DLL), нацеленный на .NET 3.5, когда я компилирую управляемую сборку, ее «Runtime Version» - 2.0.

Я пытаюсь использовать одну и ту же сборку в проекте .NET 3.5 и версии CSS. .NET 4.0. CSScript отказывается работать со сборкой .NET 2.0 («Исключение времени выполнения: сборка в смешанном режиме построена для версии 'v2.0.50727' среды выполнения и не может быть загружен в среде выполнения 4.0 без дополнительной информации о конфигурации. ").

Мне удалось локализовать проблему следующим образом (вся работа выполнена в VS 2008):

  1. Я создаю проект C # для .NET 3.5.
  2. Я создаю пустой проект C ++ в том же решении.
  3. Добавить пустой файл .cpp в проект C ++.
  4. Измените свойства проекта C ++: Тип конфигурации = Динамическая библиотека (.dll), Поддержка общеязыковой среды выполнения = Поддержка общеязыковой среды выполнения (/ clr) и убедитесь, что для «общих свойств» общих свойств установлено значение 3,5 * 1014. *
  5. Скомпилируйте проект C ++ и добавьте его как ссылку на проект C #.

Когда вы посмотрите на свойства ссылки в проекте C #, вы увидите, что "Runtime Version" v2.0.50727. У меня вопрос, какого черта?

Почему версия 2.0? Я установил все на 3.5 ... Как заставить управляемый проект C ++ скомпилировать против .NET 3.5?

Спасибо, Marek

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Версия времени выполнения относится к версии виртуальной машины, а не к библиотекам классов .NET. .NET 3.5 работает на той же виртуальной машине, что и .NET 2.0, поэтому ваша ссылка показывает v2.0.50727. Если вы хотите узнать, на самом ли деле проект C ++ нацелен на версию фреймворка 3.5, вам следует проверить ссылки на отдельные библиотеки в этом проекте.

0 голосов
/ 17 сентября 2011

Ваше «исправление» фактически не решит проблему.

Исключение во время выполнения: сборка в смешанном режиме построена для версии 'v2.0.50727' среды выполнения и не может быть загружена во время выполнения 4.0без дополнительной информации о конфигурации

Вам нужно использовать среду выполнения 4.0, чтобы избежать этого, нет смысла даже пытаться найти какую-то мифическую версию "3.5".Для этого вам нужно скомпилировать с помощью компилятора VC ++ 2010.Так как вам нужно использовать его в приложении .NET 3.5, это не стартер.

Попробуйте изучить эту «дополнительную информацию о конфигурации».См. этот вопрос , а также этот .

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